출력 매크로 종류
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/
그냥 간단한 예시
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 |