我可以在 Rust 中创建以元组为值的枚举吗?
Can I create enums in rust that have tuples as values?
我可以在枚举中使用元组作为值吗?基本上我想要这个是为了使用一个整数值作为数据库输入和一个字符串值作为对 UI 调用者的友好响应。
例如:
#[derive(Deserialize, Debug)]
enum MyTestType {
A(0, "Default"),
B(1, "something else"),
C(18, "18"),
D(4, "D")
}
我在 rust 中使用 serde crate,为了避免这里的结构,使用它会很方便
当然:
use serde::Serialize;
use serde_json;
#[derive(Serialize)]
enum Test {
A(u32, String), // NOT a tuple
B((u32, String)) // actual tuple
}
fn main () {
let a = Test::A(15, "Hello".to_string());
let b = Test::B((42, "Hi".to_string()));
println!("{}", serde_json::to_string(&a).unwrap());
println!("{}", serde_json::to_string(&b).unwrap())
}
输出:
{"A":[15,"Hello"]}
{"B":[42,"Hi"]}
我可以在枚举中使用元组作为值吗?基本上我想要这个是为了使用一个整数值作为数据库输入和一个字符串值作为对 UI 调用者的友好响应。
例如:
#[derive(Deserialize, Debug)]
enum MyTestType {
A(0, "Default"),
B(1, "something else"),
C(18, "18"),
D(4, "D")
}
我在 rust 中使用 serde crate,为了避免这里的结构,使用它会很方便
当然:
use serde::Serialize;
use serde_json;
#[derive(Serialize)]
enum Test {
A(u32, String), // NOT a tuple
B((u32, String)) // actual tuple
}
fn main () {
let a = Test::A(15, "Hello".to_string());
let b = Test::B((42, "Hi".to_string()));
println!("{}", serde_json::to_string(&a).unwrap());
println!("{}", serde_json::to_string(&b).unwrap())
}
输出:
{"A":[15,"Hello"]}
{"B":[42,"Hi"]}