当前位置: 首页 > news >正文

发布rust crate和cargo工作空间

文章目录

  • 一、cargo构建的配置类型:dev与release两种
    • 1.编译级别
    • 2.将 crate 发布到 Crates.io
      • 对整个库的注释
      • pub use再导出功能
      • 发布crates.io
  • 参考

一、cargo构建的配置类型:dev与release两种

$ cargo buildFinished dev [unoptimized + debuginfo] target(s) in 0.0 secs
$ cargo build --releaseFinished release [optimized] target(s) in 0.0 secs

dev一般用户本地测试,release用于发布

1.编译级别

Cargo.toml

[profile.dev]
opt-level = 0[profile.release]
opt-level = 3

opt-level 设置控制 Rust 会对代码进行何种程度的优化。这个配置的值从 0 到 3。越高的优化级别需要更多的时间编译,所以如果你在进行开发并经常编译,可能会希望在牺牲一些代码性能的情况下编译得快一些。这就是为什么 dev 的 opt-level 默认为 0。

2.将 crate 发布到 Crates.io

/// Adds one to the number given.
///
/// # Examples
///
/// ```
/// let arg = 5;
/// let answer = my_crate::add_one(arg);
///
/// assert_eq!(6, answer);
/// ```
/*** 文档注释以///开始,并使用Markdown格式(可以格式化为html);文档中的test case可以直接执行* 普通注释使用//开始*/
pub fn add_one(x: i32) -> i32 {x + 1
}

生成文档

 cargo doc --openDocumenting my_crate v0.1.0 (/home/wangji/installer/rust/bobo/my_crate)Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.07sOpening /home/wangji/installer/rust/bobo/my_crate/target/doc/my_crate/index.html

执行测试

  • 会执行文档中的test case
 cargo testFinished `test` profile [unoptimized + debuginfo] target(s) in 0.00sRunning unittests src/lib.rs (target/debug/deps/my_crate-de08d9d1f1e709c2)running 0 teststest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00sRunning unittests src/main.rs (target/debug/deps/my_crate-65b3f3bb46d92877)running 0 teststest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00sDoc-tests my_craterunning 1 test
test src/lib.rs - add_one (line 5) ... oktest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s

对整个库的注释

//! # My Crate
//!
//! `my_crate` is a collection of utilities to make performing certain
//! calculations more convenient./// Adds one to the number given.
///
/// # Examples
///
/// ```
/// let arg = 5;
/// let answer = my_crate::add_one(arg);
///
/// assert_eq!(6, answer);
/// ```
/*** 文档注释以///开始,并使用Markdown格式(可以格式化为html);文档中的test case可以直接执行* 普通注释使用//开始*/
pub fn add_one(x: i32) -> i32 {x + 1
}

在这里插入图片描述

pub use再导出功能

lib.rs

//! # Art
//!
//! A library for modeling artistic concepts.
//!
//!// pub use 再导出功能
pub use self::kinds::PrimaryColor;
pub use self::kinds::SecondaryColor;
pub use self::utils::mix;pub mod kinds {/// The primary colors according to the RYB color model.pub enum PrimaryColor {Red,Yellow,Blue,}/// The secondary colors according to the RYB color model.pub enum SecondaryColor {Orange,Green,Purple,}
}pub mod utils {use crate::kinds::*;/// Combines two primary colors in equal amounts to create/// a secondary color.pub fn mix(c1: PrimaryColor, c2: PrimaryColor) -> SecondaryColor {// --snip--SecondaryColor::Orange}
}

main.rs

// 通过全路径访问这些模块
use my_crate::kinds::PrimaryColor;
use my_crate::utils::mix;// pub use 访问方式简化,上面和下面选择一个就行
use my_crate::mix;
use my_crate::PrimaryColor;fn main() {let red = PrimaryColor::Red;let yellow = PrimaryColor::Yellow;mix(red, yellow);
}

发布crates.io

首先登录
在这里插入图片描述

创建一个token
在这里插入图片描述

在这里插入图片描述

使用cargo login进行登录

 cargo login

在这里插入图片描述
cargo publish

参考

  • 第14章~发布一个rust crate

http://www.mrgr.cn/news/70492.html

相关文章:

  • idea 删除本地分支后,弹窗 delete tracked brank
  • 鸿蒙系统(HarmonyOS)介绍
  • 【目标检测】【Ultralytics-YOLO系列】Windows11下YOLOV5人脸目标检测
  • Webpack 1.13.2 执行 shell 命令解决 打印时没有背景色和文字颜色的问题
  • PET-文件包含-FINISHED
  • POI实现根据PPTX模板渲染PPT
  • SD-WAN可以搭建跨国企业组网吗?
  • 如何解决企业业务流程分散的痛点
  • 深入探讨 C++ 中的 Lambda 表达式
  • CKA认证 | Day2 K8s内部监控与日志
  • Java 多态 (Polymorphism)详解
  • C++模板进阶
  • 数据重塑:长宽数据转换【基于tidyr】
  • Scala的List
  • 科普|分享10个你不知道的公司数据安全防泄密措施,让企业数据安全牢不可破!
  • AI Weekly5:过去一周重要的AI资讯汇总(1104-1110)
  • Playwright——快速入门(初章)
  • 甘肃油糕,舌尖上的滚烫美味
  • 关于有机聚合物铝电容的使用(2)
  • RFID被装信息化监控:物联网解决方案深入分析
  • jvisualvm的使用
  • LeetCode:215. 数组中的第K个最大元素
  • springboot yml配置信息书写与获取
  • linux startup.sh shutdown.sh (kkFileView)
  • TypeScript:现代 JavaScript 的超级集
  • Linux——gcc编译过程详解与ACM时间和进度条的制作