我正在尝试在泛型中使用Any
类型的结构中设置一个值,我稍后会用它来写入redis。
struct Property<T> {
value: T,
}
struct Process {
properties: Option<[Property<Any>]>,
}
这会返回错误:
the trait `core::marker::Sized` is not implemented for the type `[Property<core::any::Any + 'static>]`
修改
在阅读评论中的所有链接后,我想解释一下,我希望拥有一个可以接受任何原始类型作为值的属性:
use std::any::*;
struct Property<T> {
value: T,
}
struct Process {
properties: Option<Property<Any>>,
}
fn main() {
let p = Process {
properties: Some(
Property::<String>{
value: ""
}
)
};
let p2 = Process {
properties: Some(
Property::<u32>{
value: 150
}
)
};
}
答案 0 :(得分:0)
您可以改用矢量:
struct Process {
properties: Option<Vec<Property<Any>>>,
}
错误说,core::marker::Sized
未实现,因此在编译时不知道大小。
有关数组和向量之间区别的更多信息,请参见here。