作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
你好,我是 Rust 的新手,只是在探索如何使用枚举。我有带有枚举的简单代码。
#[derive(Debug)]
enum Thing {
Str(String),
Boolean(bool)
}
fn run() -> Vec<Thing> {
let mut output: Vec<Thing> = Vec::new();
output.push(Thing::Str("Hello".to_string()));
output.push(Thing::Boolean(true));
return output
}
fn main() {
let result = run();
for i in result {
println!("{:?}", i)
}
}
当我运行这段代码时,它工作正常,但我得到这样的输出
Str("Hello")
Boolean(true)
我怎样才能得到像
"Hello"
true
所以我可以使用这个值进行进一步的处理,比如连接字符串或类似的东西。
最佳答案
您正在使用 #[derive(Debug)]
宏,它会自动为您的类型定义 Debug 特征。打电话时println!("{:?}", i)
. {:?}
被称为“打印标记”,意思是“使用调试特性进行调试格式”。
你要使用的是Display
格式化,这需要 Display
的自定义实现特征。
一、实现Display
为 Thing
:
use std::fmt;
impl fmt::Display for Thing {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Thing::Str(s) => write!(f, "{}", s),
Thing::Boolean(b) => write!(f, "{}", b),
}
}
}
然后,您应该能够调用:
println!("{}", i)
这将使用 Display trait 而不是 Debug trait。
关于rust - [Rust 枚举] : How to get data value from mixed type enum in rust?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67714697/
我是一名优秀的程序员,十分优秀!