35.cargo配置参数.txt
>>>>>>>>>>>>>>#
# 详细教程地址:learnku/docs/cargo-book/2018/
#            www.jianshu/p/22a467204def?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
#
# Cargo 启动新项⽬ cargo new hello_world --bin
#    我们传递 --bin,是因为我们正在制作⼀个⼆进制程序 (默认): 如果我们正在创建⼀个库 (lib),我们就会把传递 --lib.
#    默认情况下,这个⽬录会初始化为⼀个新的 git 存储库,如果您不希望它这样做,请传递 --vcs none
#    cargo update          # updates all dependencies
#    cargo update -p rand  # updates just “rand”
#    使⽤ cargo test 命令运⾏您的测试
#    Cargo 寻在两个地⽅运⾏的测试:在你 src 中的每个⽂件,和 tests/ 中的任何测试。测试你的 src ⽂件应该是单元测试,并在 tests/ 中的应该是整合式测试。因#
# 编译:cargo build (或者cargo build --release)  运⾏:cargo run  语法检查(速度⽐编译快的多):cargo check  查看被宏隐藏的代码:cargo expand
#
# Cargo 做了四件事:
#  引⼊两个,包含各种项⽬信息的元数据⽂件。
#  获取,并构建项⽬的依赖项.
#  正确使⽤参数,以调⽤ rustc 或其他构建⼯具,构建你的项⽬。
#  介绍,更容易使⽤ Rust 项⽬的约定 (规范 / 风格)。
#
# Cargo.lock ⽂件啊,是包含我们的依赖项的有关信息 (即便还没有依赖)
#
# crates.io 是 Rust 社区的中央存储库,⽤作发现和下载包的位置。cargo 默认配置为,使⽤它来查请求的包.
#
# 依赖第三⽅库的例⼦:
# [dependencies]
# regex = "0.1.41"
# //可有可⽆ rust2018
# //extern crate regex;
# use regex::Regex;
# fn main() {
#    let re = Regex::new(r"^\d{4}-\d{2}-\d{2}$").unwrap();
#    println!("Did our date match? {}", re.is_match("2014-01-01"));
# }
#
>>>>>>>>>>>>>>#
[package]
name = "tt20210115"
version = "0.1.0"
authors = ["liujiayu"]
edition = "2018"
# exclude 字段标识了在发布包时,不包括的⼀组⽂件,以及检测何时重建包时,应该忽略的⽂件,⽽ include 就是显式指定⼀定包含的⽂件。
# exclude = ["build/**/*.o", "doc/**/*.md"]
# include = ["src/**/*", "l"]
# 这个 publish 字段通过错误,防⽌将包 (crate),发布到包注册中⼼ (如 crates.io)。
# publish = false
# 这个 workspace 字段可⽤于配置此包将属于的⼯作区。如果没有指定,这将被推断为⽂件系统中第⼀个 l 的 [workspace]。
# workspace = "path/to/workspace/root"
# 关于包的简短介绍. 这不会以任何格式呈现
# 到 crates.io (⼜名这不是markdown).
# description = "..."
# 这些URL指向有关包的更多信息这些是
# 旨在成为相关数据的⽹页⼊⼝,不⼀定兼容
# VCS⼯具(类似的)等.
# documentation = "..."
# homepage = "..."
# homepage = "..."
# repository = "..."
# 这指向包根⽬录下的⽂件 (与 `l` 相对的).
# 该⽂件的内容会存储,并在注册表中编⼊索引。
# crates.io 将渲染此⽂件,并将结果放在包的页⾯上.
# readme = "..."
# 这是⼀个,最多五个描述此箱的关键字的列表. 关键词
# 可以在 crates.io 上搜索, 和你可以选择任何单词
# 帮助别⼈到这个箱⼦。
# keywords = ["...", "..."]
# 这是此箱⼦最适合的(最多五个)类别的列表.
# 类别是 crates.io/category_slugs 上可⽤的固定列表, 和
# 他们必须完全匹配.
# categories = ["...", "..."]
# 这是此包的SPDX 2.1许可证表达式.  ⽬前
# crates.io将根据⽩名单的已知许可证和SPDX许可证列表2.4中的异常标识符,
# 验证提供的许可证。⽬前不⽀持括号。
#
# 使⽤AND和OR的许可证表达式
# 运算符以获得更明确的语义。
el dialog
# license = "..."
# 如果程序包使⽤⾮标准许可证, 则可以指定此 key
# 代替上述 key 和必须指向相对于此清单的⽂件怎么制作视频教程
# (类似于 readme key).
# license-file = "..."
# ========================================================================
[dependencies]
#time = "0.1.12"
regex = "0.1.41"
#rand = { git = "github/rust-lang-nursery/rand.git" }
hello_utils = { path = "hello_utils" }
#hello_utils = { path = "hello_utils", version = "0.1.0" }
# 必要的依赖
# cookie = "1.2.0"
referer翻译
# 可选依赖
# jquery = { version = "1.0.2", optional = true }
# ========================================================================
#包可以定义⼀个⼯作区,它是⼀组箱,所有箱将共享相同 Cargo.lock 和输出⽬录[workspace]
# 可选字段,从路径依赖推断(如果不存在)。
# 此处必须给出,包含的其他⾮路径依赖。
# 特别是, 对于⼀个虚拟清单,所有成员都要列出来。
members = [
jquery下载文件请求
"hello_utils"
]
# 可选字段, 如果不存在则为空
# exclude = ["path1", "path/to/dir2"]
# ========================================================================
# 此为开发配置⽂件, 给 `cargo build` 所使⽤.
[profile.dev]
#opt-level = 0      # 控制编译器构建的`--opt-level`。
# 0-1适合调试。 2是良好优化的。最⼤为 3。
# 's' 企图优化⼤⼩, 'z' 则进⼀步优化⼤⼩.
#debug = true      # (u32 or bool) 包括调试信息(调试符号).
borderlands goty# 相当于 `-C debuginfo=2` 编译器标志.
# 相当于 `-C debuginfo=2` 编译器标志.
#rpath = false      # 控制编译器是否应该设置加载器路径.
# 若为 true, 传递 `-C rpath` 标志给编译器.
#lto = false        # 链接时间优化通常会减少⼆进制⽂件和静态库的⼤⼩
# 但会增加编译时间.
# 若是 true, 传递 `-C lto` 标志给编译器, 和若是⼀个
# 字符串值像 'thin' ,那会传递 `-C lto=thin`
# 给编译器
#debug-assertions = true # 控制是否启⽤调试断⾔
# (e.g. debug_assert!() 和算术溢出检查)
#codegen-units = 16 # if > 1 并⾏代码⽣成,以改善
# 编译时间, 但阻⽌了些优化.
# 传递 `-C codegen-units`.
#panic = 'unwind'  # 恐慌策略 (`-C panic=...`), 也可以是 'abort'
#incremental = true # 是否启⽤增量编译
#overflow-checks = true # 使⽤溢出检查进⾏整数运算。
# 传递 `-C overflow-checks=...`标志给 compiler.
# `cargo test --release`,  包括本地 library 或 binary).
[lease]
# 测试的配置⽂件, ⽤于 `cargo test` (对于 `cargo test --release`,可看
c语言是一种高级语言# `release` 和 `bench` 配置⽂件).
[st]
# 基准的配置⽂件, ⽤于`cargo bench` (和要测试的⽬标和
# 单元测试的 `cargo test --release`).
[profile.bench]
# ⽂档模板,对应`cargo doc`命令
[profile.doc]
# 注意,此处的cfg可以使⽤not、any、all等操作符任意组合键值对。
# 并且此⽤法仅⽀持cargo 0.9.0(rust 1.8.0)以上版本。
# 如果是windows平台,则需要此依赖。
# [target.'cfg(windows)'.dependencies]
# winhttp = "0.4.0"
#
# [target.'cfg(unix)'.dependencies]
# openssl = "1.0.1"
# ========================================================================
[features]
# features组只能依赖于可选软件包.features的⼀个重要⽤途就是,当开发者需要对软件包进⾏最终的发布时,在进⾏构建时可以声明暴露给终端# ⽤户的features,这可以通过下述命令实现:$ cargo build --release --features "shumway pdf"
# 使⽤features时需要遵循以下规则:
# 1.feature名称在本描述⽂件中不能与出现的软件包名称冲突
# 2.除了default feature,其他所有的features均是可选的
# 3.features不能相互循环包含
# 4.开发依赖包不能包含在内
# 段落中的字段被⽤于条件编译选项或者是可选依赖
# 此字段设置了可选依赖的默认选择列表,
# 注意这⾥的"session"并⾮⼀个软件包名称,
# ⽽是另⼀个featrue字段session
# default = ["jquery", "uglifier", "session"]
# 类似这样的值为空的feature⼀般⽤于条件编译,
# 类似于`#[cfg(feature = "go-faster")]`。
# go-faster = []
# 此feature依赖于bcrypt软件包,
# 这样封装的好处是未来可以对secure-password此feature增加可选项⽬。
# secure-password = ["bcrypt"]
# secure-password = ["bcrypt"]
# 此处的session字段导⼊了cookie软件包中的feature段落中的session字段
# session = ["cookie/session"]
# 如果其他软件包要依赖使⽤本awesome软件包,可以在其描述⽂件中这样写:
# [dependencies.awesome]
# version = "1.3.5"
# default-features = false # 禁⽤awesome 的默认features
# features = ["secure-password", "civet"] # 使⽤此处列举的各项features
# ========================================================================
# [lib]
# name = "..."
# crate-type = ["dylib"] #可⽤的选项是 dylib,rlib,staticlib,cdylib 和 proc-macro
# ========================================================================
# 这部分可以⽤来重写其他副本的依赖项 . 这个 [patch] 表格由,类似依赖表格的⼦表组成
#[ates-io]
#foo = { git = 'github/example/foo' }
#bar = { path = 'my/local/bar' }
# ========================================================================
# 这部分可以⽤来重写其他副本的依赖项 . 表格的每个字段都是包标识规范,它任意选择依赖图中的节点来重写
#[replace]
#"foo:0.1.0" = { git = 'github/example/foo' }
#"bar:1.0.2" = { path = 'my/local/bar' }
# ========================================================================
# ========================================================================
# ========================================================================
# ========================================================================
借了楼,此处说⼀下有些项⽬删除cargo.lock编译报错问题的原因:
⼀个程序可能会有很多依赖关系,就好⽐如下关系图 -> 标识依赖
A -> B
A -> C
C -> D
C -> E
E -> F
即使A指定了具体的B和C的版本,但是如果C没有指定D或者E的具体版本,⼜或者E没有指定F的版本都会造成整体库不⼀样,这样,编译出来的东西可能会不⼀样,但是有了cargo.lock,会把所有的依赖都写出来具体版本号,包括F的,这样就可以
达到任何⼈任何时候编译出来的⽂件是⼀样的了,lock顾名思义,锁住具体版本号。如果删除了cargo.lock⽂件会重新把依赖库取出来⼀遍,有可能造成编译不过。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论