像下面的代码一样,它可以使用格式化打印来输出基本值或带有派生调试属性的结构体等内容。 但是当值为结构体字段时,无法直接输出。
#[derive(Debug)]
struct Point<T> {
x: T,
y: T,
}
fn main() {
let a = 3;
let p = Point { x: 5, y: 10 };
println!("{}", a); // Working
println!("{a}"); // Working
println!("{:?}", p); // Working
println!("{p:?}"); // Working
println!("{} {}", p.x, p.y); // Working
println!("{p.x} {p.y}"); // Not working
}
错误信息如下。
error: invalid format string: expected `'}'`, found `'.'`
--> src/main.rs:18:17
|
18 | println!("{p.x} {p.y}"); // Not working
| - ^ expected `}` in format string
| |
| because of this opening brace
|
= note: if you intended to print `{`, you can escape it using `{{`
error: could not compile `rust-ex` due to previous error
我认为p.x和p.y的类型是i32,所以可以用格式化打印输出,但实际上不能。有没有一种方法可以用格式化打印输出结构体字段?或者需要实现什么?