Rust学习
Rust for the win!
Rust
cargo
包管理工具最重要的意义在于。任何用户拿到你的代码,都能运行起来,而不会因为各种包版本而焦头烂额
Hello world!
作为一种现代化语言,rust吸收了多个语言的包管理优点,为大家提供了炒鸡大杀器cargo
,下面是一个示例。
上面的命令使用cargo new
创建了一个新的项目,该项目的结构和配置文件都是由cargo生成的,意味着我们的项目被cargo所管理。
ps:Rust项目主要分为两个类型,
bin
和lib
,前者是可运行的项目,后者是一个依赖库项目
来看看这个优雅的项目结构:
连git
都帮你创建了,实在贴心。
在上述代码中,cargo run
首先对项目进行编译,然后再运行,等同于运行了两个指令,下面我们手动试一下编译和运行项目:
编译
运行
在编译的时候,其实有两种编译模式、分别是debug
和release
,前者可以非常快地编译出程序来,而损失了一些性能,后者则会进行优化,编译高性能代码
当项目大了以后, cargo run
和cargo build
不可避免地会变慢,那么有没有更快的方式来验证代码的正确性呢?答案是:有!
cargo check
是一个非常快速的命令,仅仅是检查一下代码能否编译通过,而不会真的去编译,能节省非常多的时间。
Cargo.toml 和 Cargo.lock
Cargo.toml
和 Cargo.lock
是cargo
的核心文件,它的所有活动均基于二者
Cargo.toml
是cargo
特有的项目数据描述文件,储存了项目所有的元配置信息Cargo.lock
则是一个更加详细的项目依赖清单,一般不需要修改它
我们接下来打开Cargo.toml
可以看到有两个段落:
[package]
其中这些配置也一目了然
[dependencies]
那么如果要自定义项目依赖,我应该怎么写呢?
事实上,它可以有三种办法书写
- 前两者是基于官方的Rust仓库
crates.io
,通过版本说明来描述依赖 - 第三个是基于项目源代码的git仓库地址,通过URL来描述
- 第四个是基于本地项目的绝对路径或者相对路径,通过类似于Unix模式的路径来书写
Var 变量
在 Rust 中,变量是需要手动设置可变性的,而且通常来讲,我们并不把以下内容称为“赋值”,
而把这个过程叫做“变量绑定”
因为,这涉及到一个Rust的核心原则,那就是:“所有权”
任何内存对象都是有主人的,而且一般情况下完全属于它的主人,绑定就是把这个对象绑定给一个变量,让这个变量成为他的主人【同时之前这个变量的主人就失去了变量的所有权】
- 变量的可变性
Rust的变量在默认情况下是不可变的,可以通过mut
关键字让他变得可变 - 使用下划线使得Rust忽略未使用的变量
当你在设计原型时,难免会有一些草稿,可以通过下划线作为变量名的开头,来告诉他不要对这个未使用的变量"panic"
突然注意到的语法点:
- 变量和常量的区别
常量与不可变变变量不完全相同
有以下几个区别:
- 常量不允许使用
mut
,因为常量不仅仅默认不可变,而且自始至终不可变,因为常量在编译完成后,已经确认了它的值,不再变化 - 常量通常使用
const
,关键字而不是使用let
关键字来声明,并且值的类型必须标注
C:\Users\85302\Desktop\Blog\source_posts