主要方式
- 在Rust程序设计语言之中,所有类型要实现std::fmt之中的宏定义,需要进行设置可打印的
trait
,这就是为什么之前要输出必须进行设置的原因。
fmt::Debug
可以通过宏定义进行设置,而fmt::Display
有着更好的显示效果
关于fmt::debug
手动实现fmt::display
1.2 例子,自己定义一个display,注意display中trait的内敛必须使用write!
- 注意display中的write宏定义只能使用一个format augment,即所有的参数必须写在一个
"example"
之中。
use std::fmt;
#[derive(Debug)]
struct Complex{
real:f64,
imag:f64,
}
impl fmt::Display for Complex
{
fn fmt(&self,f: &mut fmt::Formatter) -> fmt::Result {
write!(f," {} + {}i",self.real,self.imag)
}
}
fn main()
{
let complex = Complex{real:3.3,imag:7.2};
println!("Display: {}",complex);
println!("Debug: {:?}",complex);
}
1.3测试实例List
- 对于许多参数,可以查看Rust标准库
1.4
- 例子,可以在格式化中完成,如果想要进行修改,可以修改format中的参数。
- 其他的语法使用可以参照标准库
use std::fmt::{self, Formatter, Display};
struct Color {
red: i32,
green: i32,
blue: i32,
}
impl Display for Color {
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
let one = format!("0x{:010X}",self.red);
let two = format!("0x{:010X}",self.green);
let three = format!("0x{:010X}",self.blue);
write!(f, "RGB1:{} RGB2:{} RGB3:{}",
one, two, three)
}
}
fn main() {
for color in [
Color { red: 128, green: 255, blue: 90 },
Color { red: 0, green: 3, blue: 254 },
Color { red: 0, green: 0, blue: 0 },
].iter() {
println!("{}", *color)
}
}