rust 学习笔记1

前言 - Rust 程序设计语言 简体中文版

介绍 - Rust 的绅士介绍

Rust 是一种 预编译静态类型(ahead-of-time compiled)语言,这意味着你可以编译程序,并将可执行文件送给其他人,他们甚至不需要安装 Rust 就可以运行。

Cargo 是 Rust 的构建系统和包管理器。大多数 Rustacean 们使用 Cargo 来管理他们的 Rust 项目,因为它可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库。
(我们把代码所需要的库叫做 依赖(dependencies))。

cargo new 命令生成的 Cargo.toml 的内容
第一行,[package],是一个片段(section)标题,表明下面的语句用来配置一个包。
接下来的三行设置了 Cargo 编译程序所需的配置:项目的名称、版本和作者。
最后一行,[dependencies],是罗列项目依赖的片段。在 Rust 中,代码包被称为 crates。

cargo build 构建项目 或者用 cargo run 在一个命令中同时编译并运行生成的可执行文件
cargo build --release 并使用 target/release 下的可执行文件进行测试
cargo check 的命令。该命令快速检查代码确保其可以编译,但并不产生可执行文件

在 Rust 中,变量默认是不可变的,在变量名前使用 mut 来使一个变量可变

静态方法(static method):关联函数是针对类型实现的,在这个例子中是 String,而不是 String 的某个特定实例
ep:     let mut guess = String::new();  //::new 那一行的 :: 语法表明 new 是 String 类型的一个 关联函数(associated function)


你不可能凭空就知道应该 use 哪个 trait 以及该从 crate 中调用哪个方法。crate 的使用说明位于其文档中。
Cargo 有一个很棒的功能是:运行 cargo doc --open 命令来构建所有本地依赖提供的文档,并在浏览器中打开。
例如,假设你对 rand crate 中的其他功能感兴趣,你可以运行 cargo doc --open 并点击左侧导航栏中的 rand。

Rust 是一门基于表达式(expression-based)的语言,并且你将编写的大部分 Rust 代码是由表达式组成的。
let y = 6; 中的 6 是一个表达式,它计算出的值是 6。函数调用是一个表达式。宏调用是一个表达式。我们用来创建新作用域的大括号(代码块),{},也是一个表达式

let y = {
        let x = 3;
        x + 1
    };
表达式的结尾没有分号。如果在表达式的结尾加上分号,它就变成了语句,而语句不会返回值。

具有返回值的函数
函数可以向调用它的代码返回值。我们并不对返回值命名,但要在箭头(->)后声明它的类型。在 Rust 中,函数的返回值等同于函数体最后一个表达式的值。
使用 return 关键字和指定值,可从函数中提前返回;但大部分函数隐式的返回最后的表达式。
ep: 
    fn five() -> i32 {
        5
    }

Rust 的核心功能(之一)是 所有权(ownership)。
1. Rust 中的每一个值都有一个被称为其 所有者(owner)的变量。
2. 值有且只有一个所有者。
3. 当所有者(变量)离开作用域,这个值将被丢弃。
copy and move and clone

如下是一些 Copy 的类型:
所有整数类型,比如 u32 。
布尔类型, bool ,它的值是 true 和 false 。
所有浮点数类型,比如 f64 。
字符类型, char 。
元组,当且仅当其包含的类型也都是 Copy 的时候。比如, (i32, i32) 是 Copy 的,
但 (i32, String) 就不是。

当枚举值包含数据时,你可
以根据需要处理多少情况来选择使用 match 或 if let 来获取并使用这些值


模块文件系统的规则
让我们总结一下与文件有关的模块规则:
如果一个叫做 foo 的模块没有子模块,应该将 foo 的声明放入叫做 foo.rs 的文件中。
如果一个

私有性规则
总的来说,有如下项的可见性规则:
1. 如果一个项是公有的,它能被任何父模块访问
2. 如果一个项是私有的,它能被其直接父模块及其任何子模块访问


为了一次将某个命名空间下的所有名称都引入作用域,可以使用 * 语法,这称为 glob 运算符

enum TrafficLight {
Red,
Yellow,
Green,
}
use TrafficLight::*;
fn main() {
let red = Red;
let yellow = Yellow;
let green = Green;
}

谈到 Rust 的 “字符串”时,它们通常指的是 String 和字符串 slice &str 类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值