创建新通用结构的正确方法是什么?

Ste*_*eve 3 generics struct rust

我正在尝试创建一个可以初始化为某种类型的通用结构T.它看起来像这样:

pub struct MyStruct<T> {
    test_field: Option<T>,
    name: String,
    age: i32,
}

impl MyStruct<T> {
    fn new(new_age: i32, new_name: String) -> MyStruct<T> {
        MyStruct<T> {
            test_field: None,
            age: new_age,
            name: new_name,
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.我明白了

链式比较运算符需要括号

和一堆其他的东西.

She*_*ter 11

强烈推荐阅读Rust编程语言.它涵盖了这样的基础知识,Rust团队花了很多时间来做好事!具体来说,关于泛型部分可能在这里有所帮助.

<T>实例化结构时不需要使用.T将推断出类型:

struct MyStruct<T> {
    test_field: Option<T>,
    name: String,
    age: i32,
}

impl<T> MyStruct<T> {
//  ^^^
    fn new(new_age: i32, new_name: String) -> MyStruct<T> {
        MyStruct {
            test_field: None,
            age: new_age,
            name: new_name,
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,Rust样式是4空格缩进和T标识符.

作为DK.指出,您可以选择指定类型参数:

MyStruct::<T> {
//      ^^^^^
    test_field: None,
    age: new_age,
    name: new_name,
}
Run Code Online (Sandbox Code Playgroud)

当类型不明确时,我只见过这样的东西,这种情况并不经常发生.