cargo
Cargo is the rust package manager. It has a bunch of default settings, but
those are silly. Using the path field in lib and bin we can override the
siliest ones.
Example
[package]
name = "swagger_to_md"
version = "1.0.0"
description = "Transform swagger to markdown"
keywords = ["swagger","markdown","transform","md","compile","html"]
[lib]
name = "swagger_to_md"
path = "main.rs"
[[bin]]
name = "swagger-to-md"
path = "bin/cli.rs"
[dependencies]
Lib
Libs are libraries. All it needs to do is expose a bunch of functions.
Bin
bin can have multiple multiple exports. Each command must reference a path
and have an export name. Each file must expose a main function.
Pinning versions
To pin versions in Cargo.toml the cargo-edit command must be exposed to add
cargo add. This pulls the latest version of a dep from crates.io and stores
it in Cargo.toml.
Dont't touch the network
$ cargo run --frozen
Install latest cargo version
$ rustup override set nightly
Use last known good cargo version
$ rustup override set $(<rustc-version)
Incremental compilation
$ CARGO_INCREMENTAL=1 cargo <command>
$ rustc -Zincremental=<path> <other arguments>