最新网站推广方法,企业建站公司服务,如何在自己的电脑上做网站,淄博周村网站建设定制文章目录 一、cargo构建的配置类型#xff1a;dev与release两种1.编译级别2.将 crate 发布到 Crates.io对整个库的注释pub use再导出功能发布crates.io 参考 一、cargo构建的配置类型#xff1a;dev与release两种
$ cargo buildFinished dev [unoptimized debuginfo] targe… 文章目录 一、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 secsdev一般用户本地测试release用于发布
1.编译级别
Cargo.toml
[profile.dev]
opt-level 0[profile.release]
opt-level 3opt-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