前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rust学习笔记:1.2 两个典例及常用命令

Rust学习笔记:1.2 两个典例及常用命令

作者头像
DioxideCN
发布2022-08-05 19:26:42
4160
发布2022-08-05 19:26:42
举报
文章被收录于专栏:用户4480853的专栏

两个典例

Hello, World

新建项目工程

  • 使用 Shell 命令创建普通工程
代码语言:javascript
复制
mkdir hello_world
cd h*
code .

编写 Rust 程序

  • 程序文件后缀名:rs
  • 文件命名规范:hello_world.rs
  • (例子)
代码语言:javascript
复制
fn main() {
	println!("Hello,World!");
}

编译与运行

  • 编译:rustc main.rs
  • 运行:
    • Windows:.\main.exe
    • Linux/Mac:./main 运行结果如下:
代码语言:javascript
复制
user@MacBook-Pro hello_world % mv hello_world.rs main.rs
user@MacBook-Pro hello_world % rustc main.rs            
user@MacBook-Pro hello_world % ./main
Hello,World!

程序解剖

  • 定义函数:fn main() {}
    • 没有参数,没有返回值
  • main 函数很特别:他是每个 Rust 可执行程序 最先运行的代码
  • 打印文本:println!("Hello,World!");
    • Rust 的缩进是 4 个空格而不是 Tab
    • println! 是一个 Rust macro (宏)
      • 如果是函数的话,就没有 !
    • "Hello,World!" 是字符串,他是 println! 的参数
    • 这行代码以 ; 结尾

编译和运行时单独的两步

  • 运行 Rust 程序之前必须先编译,命令为:rustc 源文件名
  • 编译成功后,会生成一个二进制文件
    • 在 Windows 上还会生成一个 .pdb 文件,里面包含调试信息
  • Rust 是 ahead-of-time 编译的语言
    • 可以先编译程序,然后把可执行文件交给别人运行(无需安装 Rust)
  • rustc 只适合简单的 Rust 程序

Hello, Cargo

Cargo

  • Cargo 是 Rust 的构建系统和包管理工具
    • 构建代码、下载依赖的库、构建这些库等
  • 安装 Rust 的时候会自动安装 Cargo
    • cargo --version
代码语言:javascript
复制
xinggongwuyue@DioxideCN-MacBook-Air hello_world % cargo --version
cargo 1.60.0 (d1fd9fe2c 2022-03-01)

使用 Cargo 创建项目

  • 在项目目录中创建项目:cargo new hello_cargo
    • 项目名也是 hello_cargo
    • 会创建一个新的目录 hello_cargo
      • Cargo.toml
      • src 目录
      • 初始化了一个新的 Git 仓库,.gitignore
        • 可以使用其他的 VCS:cargo new program --vcs
Cargo.toml
  • TOML(Tom’s Obvious, Minimal Language)格式,是 Cargo 的配置格式
  • [package]:是一个区域标题,表示下方内容是用来配置包(package)的
    • name:项目名
    • version:项目版本
    • authors:项目作者
    • edition:使用的 Rust 版本
  • [dependencies]:另一个区域的开始,它会列出项目的依赖项。
  • 在 Rust 里面,代码的 包/库 称作 crate
代码语言:javascript
复制
[package]
name = "hello_cargo"
version = "0.1.0"
authors = ["Dioxide <dioxide-cn@qq.com>"]
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
src/main.rs
  • cargo 生成的 main.rs 在 src 目录下
  • 而 Cargo.toml 在项目顶层下
  • 源代码都应该在 src 目录下
  • 顶层目录可以放置:README、许可信息、配置文件和其他与程序源码无关的文件
  • 如果创建项目时没有使用 cargo,也可以把项目转化为使用 cargo:
    • 把源代码文件移动到 src 下
    • 创建 Cargo.toml 并填写相应的配置

构建 Cargo 项目

cargo build
  • cargo build
    • 创建可执行文件:
      • Linux/Mac: target/debug/hello_cargo
      • Windows: target\debug\hello_cargo.exe
    • 运行可执行文件:
      • Linux/Mac: ./target/debug/hello_cargo
      • Windows: .\target\debug\hello_cargo.exe
    • 第一次运行 cargo build 会在顶层目录生成 cargo.lock 文件
      • 该文件负责追踪项目依赖的精确版本
      • 不需要手动修改该文件

运行 Cargo 项目

cargo run
  • cargo run:编译代码 + 执行结果
    • 如果之前编译成功过,且源码没有改变,那么就会直接运行二进制文件
代码语言:javascript
复制
xinggongwuyue@DioxideCN-MacBook-Air hello_cargo % cargo run
   Compiling hello_cargo v0.1.0 (/Users/xinggongwuyue/Desktop/项目工程/rust/hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 0.32s
     Running `target/debug/hello_cargo`
Hello, world!
xinggongwuyue@DioxideCN-MacBook-Air hello_cargo % cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/hello_cargo`
Hello, world!
cargo check
  • cargo check:检查代码,确保能通过编译,但是不产生任何可执行文件
  • cargo check 要比 cargo build 快得多
    • 编写代码的时候可以连续反复使用 cargo check 检查代码,提高效率。
为发布构建
  • cargo build --release
    • 编译时会进行优化
      • 代码会运行得更快,但是编译事件更长
    • 会在 target/release 而不是 target/debug 生成可执行文件
  • 两种配置
    1. 一个开发
    2. 一个正式发布
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 两个典例
    • Hello, World
      • 新建项目工程
      • 编写 Rust 程序
      • 编译与运行
      • 程序解剖
      • 编译和运行时单独的两步
    • Hello, Cargo
      • Cargo
      • 使用 Cargo 创建项目
      • 构建 Cargo 项目
      • 运行 Cargo 项目
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档