출력 매크로 종류
format! | 작성한 포맷팅대로 string 생성 |
print! | format! + 콘솔로 출력 (io::stdout) |
println! | print!에서 줄바꿈 추가 |
eprint! | format! + 표준에러로 출력 (io::stderr) |
eprintln! | eprint!에서 줄바꿈 추가 |
Positional parameters (arguments by position)
println!("{} 일", 1); 1 일 (i32)
println!("{} 일", 2i64); 2 일 (i64)
println!("내 생일은 {}월 {}일", 6, 9); 내 생일은 6월 9일 (i32)
Named parameters
println!("{0}에는 은방울님이 계신다면 {1}에는 달씨님이 계신다.", "고대", "연대");
고대에는 은방울님이 계신다면 연대에는 달씨님이 계신다
println!("Bro got nervous💀\n{b} {a} {c} {d}",
a="please",
b="can i get a",
c="buger",
d="cheese"
);
Bro got nervous💀
can i get a please buger cheese
Formatting Parameters
width
println!("올해는 {:15} 거리가 매우 멀구나", "너와 나의");
println!("올해는 {:1$} 거리가 매우 멀구나", "너와 나의", 15);
println!("올해는 {1:0$} 거리가 매우 멀구나", 15, "너와 나의");
println!("올해는 {:width$} 거리가 매우 멀구나", "너와 나의", width = 15);
let distance = 15;
println!("올해는 {:distance$} 거리가 매우 멀구나", "너와 나의");
올해는 너와 나의 거리가 매우 멀구나
$ 구문으로 인수 참조하는건 "next argument"에 영향을 미치지 않습니다.
예를들어서 아래 코드 같은 경우
println!("{} {1:0$} {} {2:0$} {} {} ", 1, 2, 3, 4);
1 2 2 3 3 4
next argument를 통해 출력되는 값이 4개, 참조로 출력되는 값이 2개
변수는 총 4개이지만 참조 출력을 2번 더 넣어 6개의 숫자가 나옵니다.
이 경우 "next arguemnt"의 영향을 받지 않으므로 카운트가 되지 않습니다.
Fill/Alignment
println!("내 대답은 {:<6}!", "No");
println!("내 대답은 {:*<6}!", "No");
println!("내 대답은 {:^6}!", "No");
println!("내 대답은 {:>6}!", "No");
내 대답은 No !
내 대답은 No****!
내 대답은 No !
내 대답은 No!
솔직히 좀 행복해요. alignment가 너무 예뻐요.
< : left aligned
^ : center aligned
> : right aligned
Sign / # / 0
println!("내 전화번호는 {:03b}-{:04}-{:04x} {2:#0$x}", 2, 1316/7, 392);
내 전화번호는 010-0188-0188 0x188
{:03b} - 2진수로 출력하되, 3자리 수까지는 0으로 채워 출력합니다.
{2:#0$x}
설명1. 3번째 인자를 참조하여 출력
설명2. 0x, 0b, 0o와 같은 alternate 출력
설명3. width 0으로 설정하고 출력 (숫자 없으면 오류)
설명4. hex 값 출력
기타 중요한 점
Localization
Rust의 표준 라이브러리에서 제공하는 locale 개념이 없으며, 모든 시스템에서 동일한 결과를 제공합니다.
println!("The value is {}", 1.5);
The value is 1.5
10진수 출력을 넣어도 1.5를 출력합니다.
Escaping
println!("{{{{{{{{{{ }}}}}}}}}}");
{{{{{ }}}}}
문자열로 { 이나 } 기호를 삽입하고 싶다면 {{ 또는 }} 을 입력해서 출력할 수 있습니다.
포맷 특성
없음 | Display |
? | Debug |
x? | 16진수, 소문자, Debug |
X? | 16진수, 대문자, Debug |
o | 8진수 |
x | 16진수, 소문자 |
X | 16진수, 대문자 |
p | 포인터 |
e | 소문자 지수부 |
E | 대문자 지수부 |
그외, 중요한 레퍼런스
std::fmt
https://doc.rust-lang.org/std/fmt/
std::fmt - Rust
Utilities for formatting and printing Strings. This module contains the runtime support for the format! syntax extension. This macro is implemented in the compiler to emit calls to this module in order to format arguments at runtime into strings. §Usage T
doc.rust-lang.org
그냥 간단한 예시
https://doc.rust-lang.org/rust-by-example/hello/print/fmt.html
'Coding > Rust' 카테고리의 다른 글
[Rust] 러스트 실행 시간 (코드 동작시간) 측정 (0) | 2024.05.25 |
---|---|
[Rust] 러스트 바이너리 파일 크기 줄이기 (0) | 2024.05.24 |
[Rust] 러스트 자료형(데이터 타입) (0) | 2024.05.20 |