Rust编程-crates.io

        发布配置和开发配置:

        [profile.dev]:   > cargo build

                opt-level=0

        [profile.release]: > cargo build --release 

                 opt-level=3

发布到crates.io

        文档注释:

                三斜线(///),使用markdown语法来格式化内容

                可以为函数编写文档注释

                cargo doc命令,基于文档注释生成html文档;cargo doc --open 生成html文档并在浏览器里打开

                在target/doc 路径下生成HTML文档

                编写注释文档需要注意:

                        Panics区域:指出函数可能发生panic的场景

                        Errors区域:函数返回Result的时候,可能会返回Err

                        Safety区域:函数使用了unsafe关键字

        文档注释可用作测试:

                        cargo test会在执行时将文档注释中的代码示例作为测试去运行。(这样设计的目的是为了让文档和代码功能能够保持同步)

        包或模块文档注释://!

                通常被用在包的根文件(也就是惯例上的 src/libs.rs )或模块的根文件上。

                通过它们来描述外部条目的整体意图可以帮助用户理解包的组织结构

pub use来导出公共API

        pub use来重新导出部分条目,可以让用户使用use的时候不用考虑包的内部结构。

创建crates.io账户

        crates.io上注册一个账户并获取一个API令牌(API token)

        命令登录:cargo login abcdefghijklmnopqrstuvwxyz012345 ,Cargo将你的API令牌存入~/.cargo/credentials文件中

为包添加元数据:

         在Cargo.toml 文件的[package]区域中为包添加一些元数据(metadata)。

[package]
name = "xxx"
description=""
version = "0.1.0"
authors = ["<you@example.com>"]
edition = "2018"
license = "MIT" // Linux基金会的Software Package Data Exchange(SPDX)中给出了所有可用的许可协议标识符

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        SPDX文档范围之外的许可证,需要将许可协议的文本以文件形式放置在项目目录中,并使用license-file字段指定文件名称,而不需要license字段来指定。

        发布命令:cargo publish

        总结:

        发布前的准备工作:

                1. 创建账户

                2. 存储API令牌

                3. 为包选择名称等任务

                4. 指定了必要的元数据

cargo.io上移除版本

        cargo yank --vers 1.0.1

        cargo yank --vers 1.0.1 --undo // 取消撤回

 工作空间 (workspace):

        将包拆分成多个代码包

        工作空间是由共用同一个Cargo.lock输出目录的一系列包所组成的。

        工作空间来创建一个项目:

                1. 创建一个文件夹:mkdir add

                2. add目录下添加cargo.toml文件

                3. add目录下添加adder二进制代码包

                        cargo new adder

                4. cargo build来构建整个工作空间

                5. target 目录用来存放所有成员的编译产出物,adder包也就没有了自己独立的target 目录

                6. 整个工作空间只在根目录下有一个Cargo.lock

                7. 调用cargo test会一次性执行工作空间中所有包的测试。

        Cargo.toml配置:

[workspace]
members = ["adder"]

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        工作空间的包的相互依赖:

adder/Cargo.toml
[dependencies]
add-one = { path = "../add-one" } // 依赖内部其他包,指定path

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        工作空间依赖外部包:

        整个工作空间只在根目录下有一个Cargo.lock

        确保了所有的内部包都会使用完全相同的依赖版本

        

       工作空间单元测试: 

        cargo test会一次性执行工作空间中所有包的测试。

        cargo test -p add-one 为某个包运行单元测试

cargo install:

        安装和使用二进制包

        获得其他人在crates.io上分享的工具,只能安装二进制目标(binary target)的包。

        二进制目标:包内存在src/main.rs 或其他被指定为二进制入口的文件

        库目标:本身无法单独执行但非常适合被包含在其他程序中。

        cargo install命令安装的二进制文件都会被存储在Rust安装根目录下的bin 文件夹中

        bin 的路径就是$HOME/.cargo/bin 。为了能够直接运行cargo install安装的工具程序,我们需要将该路径添加到环境变量$PATH中

        $PATH路径中存在二进制文件cargo-something,就可以通过运行cargo something来运行该二进制文件

        cargo --list可以列出所有的自定义命令

        

相关推荐

  1. Rust编程-编写自动化测试

    2024-07-17 11:28:03       24 阅读
  2. Rust编程-函数式编程

    2024-07-17 11:28:03       22 阅读
  3. rust编程

    2024-07-17 11:28:03       51 阅读
  4. Rust编程(一)

    2024-07-17 11:28:03       39 阅读
  5. Rust编程入门教程

    2024-07-17 11:28:03       33 阅读
  6. Rust 异步编程

    2024-07-17 11:28:03       29 阅读
  7. Rust编程-I/O

    2024-07-17 11:28:03       15 阅读
  8. Rust编程-模式匹配

    2024-07-17 11:28:03       19 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 11:28:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 11:28:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 11:28:03       45 阅读
  4. Python语言-面向对象

    2024-07-17 11:28:03       55 阅读

热门阅读

  1. 洛阳建筑设计资质市场未来趋势

    2024-07-17 11:28:03       19 阅读
  2. 数学建模中的辅助变量、中间变量、指示变量

    2024-07-17 11:28:03       24 阅读
  3. CSS Modules:重构前端样式的未来?

    2024-07-17 11:28:03       21 阅读
  4. drop、truncate和delete的区别及效率

    2024-07-17 11:28:03       23 阅读
  5. DDD学习笔记七

    2024-07-17 11:28:03       22 阅读
  6. 怎么把VMamba作为Feature Extractor集成到现有模型

    2024-07-17 11:28:03       20 阅读
  7. AI时代的技术应用与创新:探索未来

    2024-07-17 11:28:03       16 阅读