gpt4 book ai didi

generics - "the trait ` core::marker::Sized ` is not implemented"用于具有通用类型的结构向量

转载 作者:行者123 更新时间:2023-11-29 08:33:49 25 4
gpt4 key购买 nike

我正在尝试在具有 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
}
)
};
}

最佳答案

您可以改用矢量:

struct Process {
properties: Option<Vec<Property<Any>>>,
}

错误表明,core::marker::Sized 未实现,因此在编译时不知道大小。

参见 here有关数组和向量之间区别的更多信息。

关于generics - "the trait ` core::marker::Sized ` is not implemented"用于具有通用类型的结构向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33503669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com