菜鸡前端的Rust学习笔记(一)—Hello Rust

1,821 阅读3分钟

Rust学习笔记

0. 写在前面

0.1 相关资料

  1. Rust Programing Language
  2. 源码地址

0.2 本章大纲

  1. rust环境的安装
  2. 第一个hello rust程序
  3. cargo的简单使用(包的创建,打包,运行,检测更新)
  4. toml文件一些配置项的使用

1. 环境安装

1.1 windows安装

  • 步骤:

    • C++环境安装:根据文档中,windows可以先进入visual-cpp-build-tools下载对应的工具,安装完成后,重启电脑即可
    • Rust安装:rust下载选择对应的版本下载即可
    • 测试:使用rustc --version能看到对应的版本号就是安装成功啦

1.2 MacOS安装过程

  • 步骤:

    • 运行安装命令
        # 运行命令
        curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
    
    • 查看提示,成功安装后,命令行会提示 Rust is installed now. Great!

2. Hello Rust

2.1 第一个Rust代码

fn main() {
    println!("hello Rust");
}
  • 关键分析

    • 第一行的fn用于声明一个函数
    • main函数在rust函数中是作为第一行代码执行的
    • println后面的!,这是macro的宏,如果加了!代表你调用的是rust的宏而不是普通函数
    • ;代表该行语句结束

2.2 编译rust

rustc ./helloRust.ts

结果: 编译之后我们会拿到两个文件helloRust.exehelloRust.pdb

其中这个exe文件就是在windows上直接可以执行的文件

2.3 和动态语言的区别

动态语言:js,python,ruby等需要我们在运行的平台安装对应的解释器,通过解释器将代码转换为字节码,通过字节码解释器来读取并执行字节码

编译型语言:将代码编译成二进制可执行文件,平台上可以不安装任何解释器

3. Hello Cargo

3.1 cargo是什么

  1. cargo是一个构建系统和包管理工具

  2. 用来管理rust工程和处理许多任务(构建代码、下载包)

  3. cargo在安装rust的环境时,会自动安装,所以这里的话,直接调用

     # 可以直接看到对应的cargo版本
     cargo --version
    

类似nodejs中的npm,通过scrips来帮我们执行相应脚本,通过install来安装包

3.2 cargo工程的创建

3.2.1 创建

使用cargo new [projectName]来创建一个新的工程

cargo new hello_cargo

02-hello-rust.png

3.2.2 目录解析

创建的目录包括:

  • cargo.toml:用于定义包和信息[package]和依赖[dependencies],其他还有别的配置如下:

03-hello-cargo-toml.png

  • 源文件目前是放在src的目录下的

3.2.3 toml文件中需要注意的点

[package]下面的一些配置:

  • build:用于指定build来指定这个包用源码的方式编译

    比如在rust中引用了比如C的库,这些东西编译就放在一个build.rs中,会通过源码的方式进行编译

  • include和exclude:用来指定那些包需要被打包或发布,可以通过carge package --list来查看

  • publish: 用来指定包是否发布到包仓库,保护包的私有性

3.3 使用cargo构建和跑rust工程

3.3.1 构建rust工程

cargo build

3.3.2 运行cargo工程

构建成功之后的文件都在target/debug/hello_cargo下,直接运行目录下的exe文件也可以运行

.\target\debug\hello_cargo.exe

也可以通过cargo来运行对应的exe打包文件

cargo run

在执行cargo run的时候有两个比较有意思的点:

  1. 源文件没有变化,直接执行cargo build出来的文件

  2. 如果源文件产生了变化,会先编译,然后再执行

03-cargo-build.png

  1. 这里可以通过cargo check来检验当前版本的编译后的代码,是否还有更新为编译的版本

3.3.3 构建发布版本

通过--release来指定构建的版本为发布版本,通过release来发布,会做很多优化,使rust代码运行更快,但也会让构建时间更长,另外构建发布的时候,这个地方生成的文件是在target下的。