如何将构造函数添加到现有的基本类型?

Ngọ*_*yễn 3 type-conversion traits primitive-types rust rust-crates

我试图通过添加new方法来创建原始类型和对象类型usize

impl usize {
    fn new(value: &u32) -> usize {
        value as usize
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道这条消息想表达什么:

impl usize {
    fn new(value: &u32) -> usize {
        value as usize
    }
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*all 8

您无法直接在自己的包之外的类型上实现方法。但是,正如帮助消息所述,您可以定义一个新特征,然后实现它:

pub trait NewFrom<T> {
    fn new(value: T) -> Self;
}

impl NewFrom<&u32> for usize {
    fn new(value: &u32) -> Self {
        *value as usize
    }
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,这还是有点奇怪。通常您只需使用内置转换:

let int: u32 = 1;
let size = int as usize;
Run Code Online (Sandbox Code Playgroud)