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

发布rust crate

文章目录

  • 一、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.toml文件中增加license文件说明
在这里插入图片描述

git commit代码
在这里插入图片描述
cargo publish
在这里插入图片描述

上传到crate.io中crate的只能更新或者禁止他人使用

禁止他人使用的方法如下:

cargo yank --vers 0.1.0

取消他人使用

cargo yank --vers 0.1.0 undo

参考

  • 第14章~发布一个rust crate

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

相关文章:

  • n、nvm、nrm、pnpm、yarn各种指令大全
  • C语言-指针作为函数返回值及二级指针
  • mac安装Pytest、Allure、brew
  • MacOS通过X11转发远程运行virt-manager进行虚机分配
  • 工程师 - 智能家居方案介绍
  • 【人工智能】深入理解图神经网络(GNN):用Python实现社交网络节点分类与分子结构分析
  • 国际化视野下的新蓝海:如何参与海外短剧项目?
  • C语言结构体数组
  • 灾难恢复和业务连续性:制定有效的灾难恢复计划
  • Docker入门系列——Docker-Compose
  • 抓住鸿蒙生态崛起的机遇:开发者如何应对挑战,创造更好的应用体验
  • 怎么看真假国企啊?怎么识别假冒国企的千层套路?
  • string------1
  • 通过EtherNetIP转Profinet网关实现跨品牌EthernetIP协议的PLC通讯
  • 模型再训练软件环境部署说明
  • Python100道面试题(2024持续更新中............)
  • 【C++类型转换和IO流】
  • 丹摩征文活动 | Kolors入门:从安装到全面活用的对比指南
  • 数值优化 | 图解牛顿法、阻尼牛顿法与高斯牛顿法(附案例分析与Python实现)
  • Linux 实例:/etc/fstab 配置错误导致无法登录
  • MBTI关于考完PMP的碎碎念
  • 揭秘文心一言,智能助手新体验
  • Spring面试必问50道题目
  • 使用 RunPod GPU
  • STL之vecor的使用(超详解)
  • 可编辑PPT | 指挥中心系统建设与应用方案