How to Print Array and Vector data to console in Rust?
This tutorial shows How to print array and vector data to console in Rust.
In Rust, {}
is used display trait to display the normal string.
Display trait is not implemented for Array and Vector.
fn main() {
let vector = vec![5; 30];
println!("{}", vector);
}
It throws error[E0277]: Vec<{integer}>
doesn’t implement std::fmt::Display
and Vec<{integer}>
cannot be formatted with the default formatter
error[E0277]: `Vec<{integer}>` doesn't implement `std::fmt::Display`
--> test.rs:3:20
|
3 | println!("{}", v2);
| ^^ `Vec<{integer}>` cannot be formatted with the default formatter
|
= help: the trait `std::fmt::Display` is not implemented for `Vec<{integer}>`
= note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
= note: this error originates in the macro `$crate::format_args_nl` (in Nightly builds, run with -Z macro-backtrace for more info)
{}
works only with strings of data in the println
macro.
Then how do you print the array or vector to the console?
Print vector to console in Rust
{:?}
or {vector or array:?}
is used to print the data to the console whose data type implements Debug trait.
fn main() {
let vector = vec![1, 2, 3, 4, 5]; // vector of integer
let array = ["one", "two", "three", "four", "five"]; // array of strings
println!("{:?}", vector);
println!("{vector:?}");
println!("{:?}", array);
println!("{array:?}");
}
Output:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
["one", "two", "three", "four", "five"]
["one", "two", "three", "four", "five"]
How to print 2d Vector in Rust?
Created a 2d vector and iterated using iter()
and printed using debug trait for each nested vector element.
Here is a Rust 2d Vector with an example
fn main() {
let mut vector_2d: Vec<Vec<i32>> = Vec::new();
2d_vector = vec![
vec![1,2,3],
vec![4,5,6],
vec![7,8,9]
];
vector_2d.iter().for_each(|it| {
println!("{:#?}", it);
})
}