How to print structs and arrays?
As mdup says, you can use Debug
, but you can also use the Display
trait.
All types can derive (automatically create) the fmt::Debug
implementation as #[derive(Debug)]
, but fmt::Display
must be manually implemented.
You can create a custom output:
struct MyStruct {
a: i32,
b: i32
}
impl std::fmt::Display for MyStruct {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "(value a: {}, value b: {})", self.a, self.b)
}
}
fn main() {
let test = MyStruct { a: 0, b: 0 };
println!("Used Display: {}", test);
}
Shell:
Used Display: (value a: 0, value b: 0)
For more information, you can look at the fmt
module documentation.
You want to implement the Debug
trait on your struct. Using #[derive(Debug)]
is the easiest solution. Then you can print it with {:?}
:
#[derive(Debug)]
struct MyStruct{
a: i32,
b: i32
}
fn main() {
let x = MyStruct{ a: 10, b: 20 };
println!("{:?}", x);
}