Rust 编程语言

欢迎,本书将教你一些 Rust 编程语言 这方面的知识。

Rust 是一门由 Mozilla 主导开发的实验性跨平台编译型编程语言,它的设计准则为“安全,快速,并发”。

Rust 没有垃圾回收。

相对其它语言,Rust 有一些优点:容易嵌入其它语言,对时间和空间有限制,低级语言(像设备驱动、集成操作系统)。

Rust 通过排除数据竞争(data race),把许多未知的错误消灭在编译的时候。

本书分为 7 个章节:

  • 简介 - 了解及准备工作。
  • 学习 - 通过一些小项目进行练习并入门。
  • 进阶 - 学习 Rust 所拥有的一些特性。
  • 语法和语义 - 理解每一行 Rust 代码。
  • 进化中的 Rust - 学习一些尚未稳定但很有意思的 Rust 特性。
  • 术语表 - 本书所使用到的一些术语。
  • 学术研究 - 关于 Rust 有哪些学术研究。

阅读完本“简介”后,你可以选择“学习”或“语法和语义”进行学习。

本书原文在 Github


fn main() {
    let mut x = vec!["Hello", "world"];
}

fn 表示定义一个方法

let 表示定义一个变量

这里通过关键字 vec! 定义了一个类型为 Vec<T> 的变量 x

mut 表示此变量可变(默认是不可变的)。

值得说明的是:在这里我们不需要做“类型声明”。尽管 Rust 是“静态类型”的,但在一些情况下它们运行“类型推断”。

在上面的基础上,添加代码:

fn main() {
    let mut x = vec!["Hello", "world"];

    let y = &x[0];
}

在这里 y 引用 x 的第一个元素,它和其它语言里的“指针”概念类似。

fn main() {
    let mut x = vec!["Hello", "world"];

    let y = &x[0];

    x.push("foo");
}

目的很简单,我们想把 “foo” 增加到 x

error: cannot borrow `x` as mutable because it is also borrowed as immutable
    x.push("foo");
    ^
note: previous borrow of `x` occurs here; the immutable borrow prevents
subsequent moves or mutable borrows of `x` until the borrow ends
    let y = &x[0];
             ^
note: previous borrow ends here
fn main() {

}
^

不能随便这么做,因为 x 已经有引用 y 直接更改它的值是很危险的。

改为:

fn main() {
    let mut x = vec!["Hello", "world"];

    let y = x[0].clone();

    x.push("foo");
}

或:

fn main() {
    let mut x = vec!["Hello", "world"];

    # y 仍然是 x 第一个元素的引用,但作用限定了作用域
    {
        let y = &x[0];
    }

    x.push("foo");
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值