Rust简明学习手册 - Rust安装和基本概念

简介: Rust简明学习手册 - Rust安装和基本概念

前言

好久没学新语言了,最近打算学学Rust并记录一下Rust的要点,方便后期给自己参考。

快速安装

Macos | Linux

curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh

Windows

安装包下载地址

Visual Studio Code 插件

搜索安装rust-analyzer即可

快速创建rust项目

cargo new 项目名称

项目结构如下

项目根目录
    - src
        - main.rs
    Cargo.toml

src下是源代码,Cargo.toml配置了项目的依赖,版本号等信息,cargo是rust的包管理工具

运行rust代码

通过Cargo创建的项目可以直接在项目根目录下运行

cargo run

如果单独建立一个rust源码文件,则可以使用rustc编译,然后手动执行编译产物

rustc app.rs && ./app

变量

定义

let int_var = 222;
int_var = 100; // error!

直接使用let定义时,变量不可被更改,增加mut才可以修改

let mut int_var = 222;
int_var = 100; // ok

作用域

变量只在当前作用域生效,作用域的定义类似于C,比如函数,控制语句的Body。当前作用域定义的同名变量可以覆盖父作用域的相应变量。

fn function() {
    let int_var = 100; // 只在函数内部生效
    if true {
        let int_var = 20;
        // 这里访问到的int_var则是20
    }
}

常量

const THIS_IS_A_CONST: i64 = 10 * 200;

常量需要明确指定类型,由const修饰,赋值表达式只能是编译时可计算出结果的。

方法

定义

fn function_name(param1: Type, param2: Type) -> ReturnType {
    return xxx;
    // or
    xxx
}

由关键字fn开头,参数列表由逗号隔开,参数名在前,类型追加在冒号后面,返回值类型在->符号后拼接。返回值可以使用return返回,也可以不写return,但是注意分号也要去掉。

调用

分为两种调用方式,类似于其他语言的类方法和实例方法,具体会在介绍mod时详细展开

xxx::classFunc()
xxx.instancFunc()

数据类型

种类

  • 整型:分为iXX和uXX系列,XX支持8,16,32,64,128,直接十六进制(0x),八进制(0o),二进制(0b),Byte(b'A')。默认i32
  • 浮点型:f32和f64,默认f64
  • 布尔值:bool,true或者false
  • 字符:char,支持多字节字符,包括表情
  • tuple:元组,例如 let tup: (i32, f64, u8) = (500, 6.4, 1);
  • 数组:let arr = [1, 2, 3, 4, 5];

虽然rust是强类型语言,但如果编译器能推导出来类型,我们定义变量时都可以忽略类型,这个和目前很多现代语言类似

let int_var = 222; // 这里不用写i32
let int_var = xxx::funcReturnInt32Var(); // 这里不用写i32

注释

单行

// hello, world

多行

文档上没有说这种注释方式,但是我试了一下的确可以

/*
Name:func
Param: arg1
*/

流程控制语句

if

// 常规的if else
if a < 5 {

} else if b == 6 {

} else {

}

// 对标三目操作符
let a = if b==0 {someval} else {otherval};

loop

loop {
    // 永远运行
}

loop的break不仅退出循环,还可以返回一个值

let val = loop {
    ...
    break some_val;
}

while

和其他语言的while类似

while a < 5 {
    ...
    break;
}

for

和其他语言的for类似,对数组或者其他可迭代的对象进行元素遍历

for item in arr {

}
相关文章
|
16天前
|
存储 Rust 网络协议
【Rust学习】10_定义枚举
在这一章我们学习 枚举(enumerations),也被称作 enums。枚举允许你通过列举可能的 成员(variants) 来定义一个类型。首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。接下来,我们会探索一个特别有用的枚举,叫做 Option,它代表一个值要么是某个值要么什么都不是。然后会讲到在 match 表达式中用模式匹配,针对不同的枚举值编写相应要执行的代码。最后,我们将学习 if let 结构,另一个简洁方便处理代码中枚举的结构。
30 7
|
1月前
|
Rust 算法 安全
学习Rust
【10月更文挑战第13天】学习Rust
53 8
|
1月前
|
Rust 安全 算法
Rust的学习
【10月更文挑战第12天】Rust的学习
28 2
|
1月前
|
Rust 算法 安全
如何学习Rust编程?
【10月更文挑战第12天】如何学习Rust编程?
42 1
|
1月前
|
Rust API
【Rust学习】09_方法语法
结构体让你可以创建出在你的领域中有意义的自定义类型。通过结构体,我们可以将相关联的数据片段联系起来并命名它们,这样可以使得代码更加清晰。在 impl 块中,你可以定义与你的类型相关联的函数,而方法是一种相关联的函数,允许您指定结构体的实例具有的行为。 但是结构体并不是创建自定义类型的唯一方式:让我们转向 Rust 的 enum 功能,将另一个工具添加到你的工具箱中。
18 0
|
2月前
|
Rust 索引
【Rust学习】08_使用结构体代码示例
为了了解我们何时可能想要使用结构体,让我们编写一个计算长方形面积的程序。我们将从使用单个变量开始,然后重构程序,直到我们改用结构体。
92 2
|
2月前
|
存储 Rust 编译器
【Rust学习】07_结构体说明
**struct**或 ***structure***是一种自定义数据类型,允许您命名和包装多个相关的值,从而形成一个有意义的组合。如果您熟悉面向对象的语言,那么**struct**就像对象中的数据属性。在本章中,我们将比较和对比元组与结构体,在您已经知道的基础上,来演示结构体是对数据进行分组的更好方法。
27 1
|
3月前
|
存储 Rust 安全
【Rust学习】06_切片
所有权、借用和切片的概念确保了 Rust 程序在编译时的内存安全。Rust 语言提供了跟其他系统编程语言相同的方式来控制你使用的内存,但拥有数据所有者在离开作用域后自动清除其数据的功能意味着你无须额外编写和调试相关的控制代码。
26 1
|
2月前
|
Rust Linux Go
Rust/Go语言学习
Rust/Go语言学习
|
4月前
|
存储 Rust 安全
【Rust学习】04_所有权
所有权是 Rust 最独特的特性,对语言的其余部分有着深远的影响。它使 Rust 能够在不需要垃圾收集器的情况下保证内存安全,因此了解所有权的运作方式非常重要。在本章中,我们将讨论所有权以及几个相关功能:借用、切片以及 Rust 如何在内存中布局数据。
27 1
下一篇
无影云桌面