[Day12] Trait 与 STD 库中的 fs

我开始怀疑观看人数了,我觉得我猜得好不准ㄛ。我觉得会比较少人看得竟然会蛮多人看得@@
太扯了太扯
我现在在想之後打疫苗是不是没办法完成挑战QQ
身体加油R


今天要讲的是 trait 这是在 Rust 中要实现 OOP 物件导向程序设计的重要部件。
直接 Code 范例吧

trait Owo {
    fn add(&self) -> i32;
    fn reduce(&self) -> i32;
}

struct First {
    x: i32,
    y: i32,
    z: i32,
}

impl Owo for First {
    fn add(&self) -> i32 {
        self.x + self.y + self.z
    }
    fn reduce(&self) -> i32 {
        self.x - self.y - self.z
    }
}

fn main() {
    let a = First{
        x: 5,
        y: 3,
        z: 2,
    };
    println!("{}", First::add(&a));
    println!("{}", First::reduce(&a));
}

以上可以看到最简单的 trait 利用,那聪明的读者们可能已经想到了,这不是跟之前的 impl 能做到的事情没有任何区别吗,而且还增加了代码量

impl Second {
    fn add(&self) -> i32 {
        self.x + self.y + self.z
    }
    fn reduce(&self) -> i32 {
        self.x - self.y - self.z
    }
}

这是不用 trait 的写法,是不是少了很多东西呢
那接下来我来讲一下为甚麽要使用 trait
如果说定义了第二个叫做 Second 而他要实现的东西跟 First 一样
那这样一个一个看是不是很难去理解整段程序码,此时就能使用 trait 对这个规范进行一个限制,让他无法出现 trait 所绑定的以外的东西,就能够让整体的可读性变高。

那麽以上就是最简单的 trait 用法,然後需要知道的是很多套件都有使用 trait 来规范使用者使用该套件所以撰写时要特别注意。


那接下来讲甚麽呢,至少明天应该会讲多线程
只不过我还真的没想到 trait 这麽快就写完了 该水一下了
好啦在讲几个例子有关 Rust 的 std 库


FS

先附连结:fs
在 Rust 中想要去撰写文字档或是开启文字档编辑之类的 STD 库就有内建给你了

fn create_file(s: String) {
    File::create(&s).unwrap();
}

^这样就可以创建档案。

fn delete_file(s: String) -> std::io::Result<()>{
    remove_file(&s)?;
    Ok(())
}

^这样就可以删除档案,不过要记得的是,在以下情况会回传 Err

  • 没有此档案
  • 指向目录
  • 没有删除的权限
fn write_file(s: String, Name: String) -> std::io::Result<()>{
    write(Name, s)?;
    Ok(())
}

^撰写档案的部分

fn open_file(s: String) -> std::io::Result<()> {
    let mut f = File::open(s)?;
    let mut data = String::new();
    f.read_to_string(&mut data)?;
    println!("{}", data);
    Ok(())
}

^ 开启档案


好了,今天差不多到这边吧,各位晚安 又灌...又灌...又...又灌水文章


<<:  什麽是 JSX (Day2)

>>:  【Day03】数据输入元件 - Radio

[Day30] 动画篇7

最後来做个暴击效果吧 先改一下Actor,设定一下暴击率: Action: Sprite_Damag...

Day02 工欲善其事必先利其器

VS Code Extension外挂套件 在建立React应用程序之前,建议可先安装VS Code...

Day28-用jQuery写得出ToDoList吗_3_id的重要性与作用

首先先来写id的使用 我们要做一个随机码id的用意是因为,如果我们需要去对特定的label做改变我们...

Day 16 - Android Studio 一个简单的计数器

Day 16 - Android Studio 一个简单的计数器 上次我们大致介绍了Andorid ...

Day01 前言

自我介绍 大家好,我是 Nick,15年开始接触 iOS App 的开发,在学习的过程中独立完成一...