2023-11-rust-struct

struct 类似 schema。 ts的interface 和type

struct MyStruct {
    width: i32,
    height: i32,
}

创建实例

 let eg1 = MyStruct {
        width: 23,
        height: 22,
    };

struct 可以有自己的方法,并且默认第一个参数是该实例

impl MyStruct {
    fn can_hold(&self, instance: &MyStruct) -> bool {
        self.width * self.height > instance.width * instance.height
    }
}

&self 是 self:&Self 的缩写。在一个impl块中,Self类型是impl块的别名,方法的第一个参数必须有一个名为 self的Self类型的参数。可以缩写为self,跟函数一样也有所有权机制。如果不是self会报错:

found the following associated functions; to be used as methods, functions must have a `self` param

struct 关联函数:

impl MyStruct {
    fn ass(a: i32) -> Self {
        Self {
            width: a,
            height: 44,
        }
    }
}

第一个参数可以不为self,返回一个 Self实例。调用的时候跟实例方法不同。

   eg1.can_hold(&eg3) //方法
   MyStruct::ass(55) // 关联函数

关联函数的目的是返回一个 结构体实例。可以理解为一个构造函数,使用结构体 和  :: 语法 来调用这个函数,这个函数位于结构体的命名空间中,:: 用于关联函数 和 结构体的命名空间。

另外:

方法可以重载 ..... 

你可能感兴趣的:(2023Rust,rust,开发语言,后端)