如何在 Rust 中的标准类型上定义 impl?

Sur*_*rya 1 rust

我们如何围绕现有类型定义包装类型并在其上定义函数?

我尝试了下面的代码,但收到此错误

struct Deploy(u8);

impl Deploy {
    fn values_yaml(self) -> u8 {
      self+1  
    }

    fn chart(self) -> u8 {
        self+1
    }
}


fn main() {
    let a = Deploy(1);
    println!("Hello, world! {:?}", a.chart());
}
Run Code Online (Sandbox Code Playgroud)

错误:

error[E0369]: cannot add `{integer}` to `Deploy`
   --> src/main.rs:5:11
    |
5   |       self+1  
    |       ----^- {integer}
    |       |
    |       Deploy
    |
note: an implementation of `Add<_>` might be missing for `Deploy`
Run Code Online (Sandbox Code Playgroud)

任何建议都是非常受欢迎的。

Lag*_*aer 5

您正在处理一个元组结构,元组大小为 1。元组的元素是通过 Rust 中元组的常用语法访问的:

self.0
Run Code Online (Sandbox Code Playgroud)

或者,您也可以与常规元组类似地匹配字段。

let Deploy(resource_type) = self;
Run Code Online (Sandbox Code Playgroud)