Struct core::fmt::Arguments 1.0.0[−][src]
pub struct Arguments<'a> { /* fields omitted */ }
Expand description
该结构体表示格式字符串及其参数的安全预编译版本。 由于无法安全地完成此操作,因此无法在运行时生成该文件,因此未提供任何构造函数,并且该字段为私有字段以防止修改。
format_args!
宏将安全地创建此结构体的实例。
宏在编译时验证格式字符串,因此可以安全地执行 write()
和 format()
函数的使用。
您可以在 Debug
和 Display
上下文中使用 format_args!
返回的 Arguments<'a>
,如下所示。
该示例还显示 Debug
和 Display
的格式相同: format_args!
中的插值格式字符串。
let debug = format!("{:?}", format_args!("{} foo {:?}", 1, 2));
let display = format!("{}", format_args!("{} foo {:?}", 1, 2));
assert_eq!("1 foo 2", display);
assert_eq!(display, debug);
RunImplementations
获取格式化的字符串 (如果没有要格式化的参数)。
在最琐碎的情况下,这可以用来避免分配。
Examples
use std::fmt::Arguments;
fn write_str(_: &str) { /* ... */ }
fn write_fmt(args: &Arguments) {
if let Some(s) = args.as_str() {
write_str(s)
} else {
write_str(&args.to_string());
}
}
Runassert_eq!(format_args!("hello").as_str(), Some("hello"));
assert_eq!(format_args!("").as_str(), Some(""));
assert_eq!(format_args!("{}", 1).as_str(), None);
Run