ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RUST入门.md

2021-08-28 13:03:18  阅读:224  来源: 互联网

标签:Cargo 入门 md cargo rs lock world hello RUST


RUST入门

目录

Hello World

mkdir -p projects/hello_world/
cd projects/hello_world

main.rs文件

fn main() {
    println!("hello, world!");
}

编译和运行

rustc main.rs
./main

格式化:rustfmt

Cargo

Cargo 是 Rust 的构建系统和包管理器。

hello

构建如下:

  1. cargo new hello_world --bin

    --bin为默认参数,表示构建二进制程序。可选--lib表示构建库。

    nsfoxer@nsfoxer-pc ~/temp> cargo new hello_world --bin
         Created binary (application) `hello_world` package
    nsfoxer@nsfoxer-pc ~/temp> tree hello_world
    hello_world
    ├── Cargo.toml
    └── src
        └── main.rs
    
    1 directory, 2 files
    

    cargo会同时构建git项目。使用--vcs none禁用git存储。

  2. 编译:

    cargo build

    将获取所有依赖项。

    nsfoxer@nsfoxer-pc ~/t/hello_world> tree .
    .
    ├── Cargo.lock
    ├── Cargo.toml
    ├── src
    │   └── main.rs
    └── target
        ├── CACHEDIR.TAG
        └── debug
            ├── build
            ├── deps
            │   ├── hello_world-efb3cc30327658a6
            │   └── hello_world-efb3cc30327658a6.d
            ├── examples
            ├── hello_world
            ├── hello_world.d
            └── incremental
                └── hello_world-2bu9x4t5793bs
                    ├── s-g1qy781nco-1nkogqh-2hbtkajf7iavr
                    │   ├── 1afbzx1y0x1dbpio.o
                    │   ├── 1ko7w99wy4kz2chh.o
                    │   ├── 28cobucdo6rhinaa.o
                    │   ├── 2goevba305ege8v6.o
                    │   ├── 4d0psjpawt67vlja.o
                    │   ├── 5byta3abs29cbrhj.o
                    │   ├── 5dygtqqmhu41ip90.o
                    │   ├── dep-graph.bin
                    │   ├── gfq0hw1bwbsq84d.o
                    │   ├── query-cache.bin
                    │   └── work-products.bin
                    └── s-g1qy781nco-1nkogqh.lock
    
    9 directories, 20 files
    

    Cargo.lock包含依赖相关信息。使用--release开启编译优化。

    Caogo.toml包含项目的各种元信息。

  3. 运行:

    ./target/debug.hello_world

可以使用cargo run进行编译和运行。

可以使用cargo check进行代码检查。

目标

cargo允许Rust项目声明其各种依赖,并保证始终可重复构建。

  1. 引入两个含有各种信息的元数据文件;
  2. 获取并构建项目的依赖项;
  3. 调用rustc或其他工具进行构建;
  4. 使用 Rust 项目的约定(规范/风格)。

依赖

crates.io是 Rust 社区的中央存储库,用作发现和下载包的位置。cargo默认配置为,使用它来查找请求的包。

添加依赖

[dependencies]
time = "0.1.12"
regex = "0.1.41"

cargo build将会获取依赖。如果regexcrates.io上更新了,在我们选择cargo update之前,我们仍会使用相同的版本进行构建.

文件布局

.
├── Cargo.lock 			
├── Cargo.toml
├── benches  	# 基准测试
│   └── large-input.rs
├── examples 	# 示例
│   └── simple.rs
├── src
│   ├── bin # 其他可执行文件
│   │   └── another_executable.rs
│   ├── lib.rs # 库文件
│   └── main.rs # 可执行文件
└── tests # 集成测试
    └── some-integration-tests.rs

Carogo.toml && Carogo.lock

  • Cargo.toml是从广义上描述你的依赖,并由你编写.
  • Cargo.lock包含有关您的依赖项的确切信息。它由 Cargo 维护,不应手动编辑.
  • 构建其他项目要依赖的库,请将Cargo.lock放置在你的.gitignore
  • 构建可执行文件,如命令行工具或应用程序,请检查Cargo.lock位于git管理下。
[dependencies]
rand = { git = "https://github.com/rust-lang-nursery/rand.git", rev = "9f35b8e" }

如上,依赖于github上的项目,当未指定其他信息时默认依赖github上的最新版本。例子中rev指定github的版本。

Cargo.lock会记录项目第一次构建时依赖版本,此时不需要进行手动添加加具体版本。

当我们准备选择,更新库的版本时,Cargo 会自动重新计算依赖关系,并为我们更新内容:

$ cargo update           # updates all dependencies
$ cargo update -p rand   # updates just “rand”

测试

cargo test:会查找srctests的测试

标签:Cargo,入门,md,cargo,rs,lock,world,hello,RUST
来源: https://www.cnblogs.com/nsfoxer/p/15196551.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有