栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RUST速成-trait

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RUST速成-trait

说明

用关键字 trait 定义一组函数,类似 Java 的 interface 或 C++的虚函数。

Rust 的 trait 和 数据类型(struct)的定义是分开的。

可以为一个类型实现1个 trait 或 多个 trait。

为自定义类型实现trait
struct Point{
    x: i32,
    y: i32, 
}

trait Adder {
    fn get(&self) -> (i32, i32);  // self 类似 Java 或 C++ 的 this,
    fn add(&mut self, x0: i32, y0: i32); // 可以修改 self 的 函数
    fn test0(); // 没有 self 的函数
}

impl Adder for Point {
    fn get(&self) -> (i32, i32) {
        return (self.x, self.y);
    }
    
    fn add(&mut self, x0: i32, y0: i32) {
        self.x += x0;
        self.y += y0;
    }
    
    fn test0() {
        println!("test0() without self");
    }
}

fn main() {
    
    Point::test0(); // 没有 self 的调用,类似 Java 调用 static 成员函数
    
    let point = Point{x: 1, y: 2};
    let (x, y) = point.get();
    println!("point.get() return {}, {}", x, y);
    
    let mut point = Point{x: 3, y: 4}; // 变量要声明成 mut 
    point.add(1, 2);
    println!("point.add() result {}, {}", point.x, point.y);
}
为内嵌类型实现 trait
trait T1 {
    fn test1(&self, h: i32) -> i32; // self 类似 Java 或 C++ 的 this 
}

impl T1 for i32 {
    fn test1(&self, h: i32) -> i32{
        let result = self + h;
        return result;
    }
}

fn main() {
    let v: i32 = 100;
    let r = v.test1(1);
    println!("test1() return {}", r);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/271457.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号