1.2 Rust格式化打印
打印是通过一系列在标准定义std::fmt其中一些宏处理包括:
-
format!
: 写格式化的文本到字符串 -
print!
: 类似于%uA0format!
%uA0但文本打印到控制台上。 -
println!
: 类似于%uA0print!
%uA0但追加一个换行符。
以相同的方式解析全部文本。加号是正确的格式将在编译时进行检查。
fn main() { // In general, the `{}` will be automatically replaced with any // arguments. These will be stringified. println!("{} days", 31) // Without a suffix, 31 becomes an i32. You can change what type 31 is, // with a suffix. // There are various optional patterns this works with. Positional // arguments can be used. println!("{0}, this is {1}. {1}, this is {0}", "Alice", "Bob") // As can named arguments. println!("{subject} {verb} {predicate}", predicate="over the lazy dog", subject="the quick brown fox", verb="jumps") // Special formatting can be specified after a `:`. println!("{} of {:b} people know binary, the other half don&apost", 1, 2) // It will even check to make sure the correct number of arguments are // used. println!("My name is {0}, {1} {0}", "Bond") // FIXME ^ Add the missing argument: "James" // Create a structure which contains an `i32`. Name it `Structure`. struct Structure(i32) // However, custom types such as this structure require more complicated // handling. This will not work. println!("This struct `{}` won&apost print...", Structure(3)) // FIXME ^ Comment out this line. }
std::fmt%uA0包括多个%uA0traits%uA0支配文本的显示。 两个重要的基本形式如下:
-
fmt::Debug
: 使用%uA0{:?}
%uA0标记。格式文本用于调试的目的。 -
fmt::Display
: 使用%uA0{}
%uA0标记。在一个更优雅的,用户友好的方式设置文本格式。
这里,%uA0fmt::Display
%uA0被使用,因为std库提供这些类型。 打印文本自定义类型,需要更多的步骤。