rust外服靶场怎么进_Rust基础学习笔记(五):Cargo与Crates.io

最近复习鸽了几天,今天继续学,希望在考试之前搞定这个官方文档 もうダメ。。。。

本章学习Cargo和Crates.io相关,内容有下:

自定义构建

向crates.io提交libraries

利用工作空间Workspace组织大型工程

从crates.io下载二进制库

用自定义命令拓展Cargo

自定义构建

基础

虽然构建方法已经预定义了,但是也可以自定义

Cargo使用两个profile,一个是dev(用在单纯build指令中),一个是release(用在cargo build --release中)。两者都可以通过在Cargo.toml中添加[profile.*]标签自定义:

[profile.dev]

opt-level = 0[profile.release]

opt-level = 3

[profile.release]

opt-level = 1    //Override!

这里的opt-level指编译器的优化等级,数值为0-3,数值越高优化越多编译更迟缓运行更高效。

向Crates.io提交Crate

通过三斜杠添加文件注释

通过文件注释让别人明白该如何使用它,生成HTML文档,支持Markdown格式

///#Example

///```

///let arg = 5;

///```

cargo doc 生成这个HTML文档

cargo doc --open 在浏览器中打开你可能需要的文档

文件注释通常包括使用例、引发的错误/Panics与安全性(是否为unsafe)。可根据具体情况添加。

//考完试了,继续摸

你也可以通过 cargo test 来运行注释中的代码块,这些代码将作为测试运行,用来确定例子与源码的更新是否同步。

通过

//! ....//! ....

来完成对整个Crate的总括注释。要注意这些注释一般写进src/lib.rs,在打开doc时直接显示。

通过pub use完善公共API

可以方便用户的使用,不用抽丝剥茧地调用类方法。

使用方法就是在需要使用的方法名前面加上 pub use self::...

举例:

pub use self::kinds::PrimaryColor;

pub mod kinds {

pub fn PrimaryColor(){...}

}

调用时无第一句:

use art::kinds::PrimaryColor;

ust art::PrimaryColor;

真正提交自己的Crates:

首先要申请一个账号

注意的是要在 crates.io/me/ 更改API密钥并通过  $ cargo login [pwd] 登录

编辑详细信息(元数据)

文件:Cargo.toml

代码:

[package]

name= "Whatever_u_like" //先到先得

version = "0.1.0"authors= ["Your Name "]

edition= "2020"description= "*#>>"license= "?" //许可证

[dependencies]

最后 $cargo publish 提交。同样可以通过这个指令更新。

你可以yank一个版本来阻止用户继续使用它,无论是出于版本老旧还是严重漏洞,但是由于代码实际上不会被删除,要是想删除还是用reset。通过undo来撤销。

$cargo yank --vers 1.0.1$cargo yank--vers 1.0.1 --undo

使用Workspaces

不同的相关packages组成workspaces

新建一个文件夹,在里面添加文件Cargo.toml:

[workspace]

members=["adder",

]

然后build,就会得到名为adder的子文件夹,这是新建的package,具有完整的基本结构。同时会新建一个target文件夹,里面是所有源代码的编译后文件。

├── Cargo.lock├── Cargo.toml

├── adder

│ ├── Cargo.toml

│ └── src

│ └── main.rs

└── target

通过修改Cargo.toml和运行Cargo new来在工作空间里面创建新的Librarty Crate,不过要用--lib参数:

cargo new add-one --lib

添加依赖

比如你要在相同的工作区域里将add-one添加为adder的依赖,由于Cargo不默认工作区间的各crate互相依赖,因此要手动在adder的Cargo.toml里添加:

[dependencies]

add-one = { path = "../add-one" }

要想添加外部依赖,就要在相应的文件夹里添加Cargo.toml的依赖,最后在父文件夹的Cargo.lock保存相关信息。这样做是保证各个Crate用的是相同版本的外部依赖,但是这个依赖只能在被声明的区间里使用。添加方法:

[dependencies]

rand= "0.5.5"

同样你可以添加一个测试,方法没有什么特别的地方。

怎么下载别人的cargo

按官方文档的说法,目前还只能安装有Binary Target的包:

Binary Target:源码可编译为可执行程序

Library Target:自己不能单独运行,可以和其他crate结合。

两个target可以共存的!

下载到那里去了?  $PATH/bin  而且它会提示你的

怎么用?自然地把它当成cargo的指令参数就行了,这些包会成为你有用的工具。

后记

几乎时隔一个月才再次开始Rust的学习,由于自己基础不牢,再看这些不喾天书。可能之后的进一步学习要待写一些代码暖暖手,并掌握相关知识后再行展开吧!感觉现在要是再进行下去的话恐怕自己都不知道自己在说些什么了。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值