没错,我也在学习rust语言
背景 我在学习rust的时候,在想,rust如何像python一样,可以打印一个对象呢?
就像是python里面的__str__
或者__repr__
。
代码
摸索
struct User {
active: bool,
username: String,
email: String,
sign_in_count: u64,
}fn main() {
let mut arr2 = vec![
User {
email: String::from("@.com"),
username: String::from("小黄"),
active: false,
sign_in_count: 1,
},
];
arr2.push(User {
email: String::from("@.com"),
username: String::from("小李"),
active: true,
sign_in_count: 3,
});
// 打印一下内容
for value in arr2 {
println!("{:?}", value);
}
}
上面代码运行,发现不通过:
文章图片
我在
println!
里面都加了:?
怎么还不通过。具体我也不清楚。后来我在想:rust是否可以像python那样,只要对对象实现了
__str__
或者__repr__
方法,就可以打印了。果然,去谷歌了一下,就找到了答案:
解决办法
我参考了这个链接:https://stackoverflow.com/questions/30253422/how-to-print-structs-and-arrays
【rust|rust打印自定义对象】对
User
实现了一个方法: std::fmt::Display
。完整代码如下:
struct User {
active: bool,
username: String,
email: String,
sign_in_count: u64,
}impl std::fmt::Display for User {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "show result---> active: {}, username: {}, email: {}, count: {}", self.active, self.username, self.email, self.sign_in_count)
}
}fn main() {
let mut arr2 = vec![
User {
email: String::from("@.com"),
username: String::from("小黄"),
active: false,
sign_in_count: 1,
},
User {
email: String::from("@.com"),
username: String::from("小花"),
active: true,
sign_in_count: 2,
},
];
arr2.push(User {
email: String::from("@.com"),
username: String::from("小李"),
active: true,
sign_in_count: 3,
});
// 打印一下内容
for value in arr2 {
println!("{}", value);
}
}
上面的代码运行结果如下:
文章图片
参考链接
- https://stackoverflow.com/questions/30253422/how-to-print-structs-and-arrays
- https://kaisery.github.io/trpl-zh-cn/ch08-01-vectors.html
- https://kaisery.github.io/trpl-zh-cn/ch05-01-defining-structs.html
- 目前主要是使用python和R。也在学习一点点C++,rust。
- 感觉这个rust写起来和python差不多呀,尤其是构建数据结构的时候(目前还没对rust的模式设计了解过)。rust写起来也很轻松,感觉不怎么像是c++这么“拗口”。
推荐阅读
- Rust 公布 2024 年路线图(重点涉及三个方向)
- 《与 Rust 勾心斗角》·点
- docker|基于Rust-vmm实现Kubernetes运行时
- 开源日报|谷歌牵头呼吁保护开源项目;Firefox 更新后服务器出现 Bug;Rust 1.58.0 发布 | 开源日报
- 不要再说 Rust 过度炒作了
- 极客日报|称钉钉将上线“下班勿扰”功能;苹果发生大规模网络宕机;.NET 7 Preview 2发布|极客头条
- 资讯|C 不再是一种编程语言
- CA周记 2022年的第一课 - Rust
- rust|网红编程语言Rust到底是个什么鬼()