rust学习-cargo和crates.io

使用发布配置来自定义构建

Cargo 有两个主要的配置:

(1)运行 cargo build 时采用的 dev 配置

(2)运行 cargo build --release 的 release 配置

复制代码
$ cargo build
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
$ cargo build --release
    Finished release [optimized] target(s) in 0.0 secs

Cargo.toml 文件没任何 profile.* 时,Cargo 对每一个配置采用默认设置。
通过在profile.*对应的部分中增加任何定制的配置

复制代码
// 控制 Rust 会对代码进行何种程度的优化
// 值从 0 到 3
// 越高的优化级别需要更多的时间编译
[profile.dev]
opt-level = 0

[profile.release]
opt-level = 3

使用工作空间来组织更大的项目

构建目录如下

复制代码
// rust_add % tree
.
├── Cargo.lock
├── Cargo.toml
├── add-one
│   ├── Cargo.toml
│   └── src
│       └── lib.rs
├── add-two
│   ├── Cargo.toml
│   └── src
│       └── lib.rs
├── adder
│   ├── Cargo.toml
│   └── src
│       └── main.rs

Cargo.toml

复制代码
[workspace]

members = [
    "adder",
    "add-one",
    "add-two",
]

add-one/src/lib.rs

复制代码
pub fn add_one(x: i32) -> i32 {
    x + 1
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn it_works() {
        assert_eq!(3, add_one(2));
    }
}

add-two/src/lib.rs

复制代码
pub fn add_two(x: i32) -> i32 {
    x + 2
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn it_works() {
        assert_eq!(4, add_two(2));
    }
}

adder/src/main.rs

复制代码
use add_one;
use add_two;

fn main() {
    let num = 10;
    println!("Hello, world! {} plus one is {}!", num, add_one::add_one(num));
    println!("Hello, world! {} plus two is {}!", num, add_two::add_two(num));
}

命令

复制代码
// 根目录下创建lib
cargo new add-two --lib
cargo new add-one --lib

// 根目录下执行构建
cargo build

// 根目录下执行测试
cargo test

// 运行adder中的main
cargo run -p adder

cargo install 从 Crates.io 安装二进制文件

cargo install 命令用于在本地安装和使用二进制 crate

crate 的 README 文件有该 crate 是库、二进制目标还是两者都是的信息。

复制代码
cargo install ripgrep

最后一行输出展示了安装的二进制文件的位置和名称

在这里 ripgrep 被命名为 rg

复制代码
  Installing /Users/xxx/.cargo/bin/rg

将安装目录加入 $PATH (rust在安装时已经加入了PATH)

复制代码
// pwd
/Users/xxx/.cargo/bin
// ls
cargo		cargo-miri	rls		rust-gdbgui	rustdoc
cargo-clippy	clippy-driver	rust-analyzer	rust-lldb	rustfmt
cargo-fmt	rg		rust-gdb	rustc		rustup

运行 rg --help 并开始使用一个更快更 Rust 的工具来搜索文件

相关推荐
乌暮30 分钟前
综合案例:宠物电商系统
java·开发语言·spring·mvc·restful·1024程序员节
大文说跨境30 分钟前
亚马逊多店铺的图片素材怎么批量去重:EXIF 与哈希的处理流程
开发语言·php
SteveSenna1 小时前
aubo学习:realsense手眼标定
学习·机器人·视觉检测
大风起兮云飞扬丶2 小时前
Java——枚举
java·开发语言
小灰灰搞电子2 小时前
Rust+Slint 实现高级动态消息提示框源码分享
开发语言·rust
Dev _2 小时前
Python解释器安装在系统级目录导致命令行用户‌没有权限‌向该目录写入文件
开发语言·python
qq_406981033 小时前
大白话rust系列08 当变量遮蔽遇上引用,探究变量遮蔽的本质
开发语言·后端·rust
喵了几个咪3 小时前
GoWind ShortPlay 拆解:不用模型的推荐闭环——埋点回流、三路召回与已看去重
开发语言·后端·微服务·golang·gowind
Li_RuiQi3 小时前
DAgger与交互式模仿学习_ACT学习笔记
笔记·学习
谙弆悕博士3 小时前
用 C 写了个 Windows 聊天室,踩了几个多线程和控制台的坑
c语言·开发语言·c++·windows·网络编程·聊天室