Rust 返回锈蚀类型
我试图创建一个trait(StringToTable),它返回一个结构,并实现另一个trait(Table) 当我读到这个答案时,我尝试了“盒式”方法,但没有成功Rust 返回锈蚀类型,rust,Rust,我试图创建一个trait(StringToTable),它返回一个结构,并实现另一个trait(Table) 当我读到这个答案时,我尝试了“盒式”方法,但没有成功 我不知道调用我的StringToTable时的结构类型,所以我不能使用像“to_table”或“StringToTable”这样的方法 出现以下错误的情况: 我的代码: 1°进近: fn to_table(table:String)->选项; 我得到: error[E0225]:只有自动特征可以用作特征对象中的附加特征 -->src
我不知道调用我的StringToTable时的结构类型,所以我不能使用像“to_table
fn to_table(table:String)->选项;
我得到:
error[E0225]:只有自动特征可以用作特征对象中的附加特征
-->src/main.rs:18:75
|
18 | fn to_table(table:String)->选项;
| ---------------- ^^^^^^^^^
| | |
||额外的非自动特征
||特征对象类型中使用的特征别名(额外使用)
|第一非自特性
|trait对象类型中使用的trait别名(首次使用)
2°进近:
fn to_table2(table:String)->选项,其中T:DeserializeOwned+Serialize+SearchIndex;
我得到:
错误[E0412]:在此作用域中找不到类型'T'
-->src/main.rs:20:68
|
20 | fn to_table2(table:String)->选项,其中T:DeserializeOwned+Serialize+SearchIndex;
|^在此范围内找不到
**我的代码被简化了
我试图做的是:在tcp服务器上接收一个随机名称,并获得它的等效结构。在第二种方法中,您可以通过声明类型参数T来修复编译错误。您可以在函数或trait上执行此操作 关于功能:
fn to_table2<T>(table: String) -> Option<Box<dyn Table<T>>> where T: DeserializeOwned + Serialize + SearchIndex;
fn to_table2(table:String)->选项,其中T:DeserializeOwned+Serialize+SearchIndex;
关于特质:
pub trait StringToTable<T> where T: DeserializeOwned + Serialize + SearchIndex {
fn to_table2(table: String) -> Option<Box<dyn Table<T>>>;
}
pub-trait-StringToTable,其中T:DeserializeOwned+Serialize+SearchIndex{
fn至_表2(表:字符串)->选项;
}
另一个选项是使用关联类型:
pub trait StringToTable {
type T : DeserializeOwned + Serialize + SearchIndex;
fn to_table2(table: String) -> Option<Box<dyn Table<Self::T>>>;
}
pub-trait-StringToTable{
类型T:反序列化拥有+序列化+搜索索引;
fn至_表2(表:字符串)->选项;
}
我不知道调用我的StringToTable时的结构类型,所以我不能使用类似“to_table