- Hands-On Data Structures and Algorithms with Rust
- Claus Matzinger
- 290字
- 2021-07-02 14:11:46
The compile and run commands
As the main build tool, cargo does compile and run by way of creating and then executing the output binary (usually found in target/<profile>/<target-triple>/).
What if a library written in a different language is required to precede the Rust build? This is where build scripts come in. As mentioned in the Project configuration section, the manifest provides a field called build which takes a path or name to a build script.
The script itself can be a regular Rust binary that generates output in a designated folder, and can even have dependencies specified in Cargo.toml ([build-dependencies], but nothing else). Any required information (target architecture, output, and so on) is passed into the program using environment variables, and any output for cargo is required to have the cargo:key=value format. Those are picked up by cargo to configure further steps. While the most popular is building native dependencies, it's entirely possible to generate code (such as bindings, data access classes, and so on) as well. Read more in the cargo reference: https://doc.rust-lang.org/cargo/reference/build-scripts.html.
Larger projects will require a more complex structure than a simple src/ folder to contain all the source code, which is why cargo provides the option to split projects into subprojects, called a workspace. This comes in handy for architectural patterns such as microservices (each service could be a project), or loosely coupling components (clean architecture). To set this up, place each subproject in a subdirectory and create a Cargo.toml in the workspace that declares its members:
[workspace]
members = [ "core", "web", "data"]
This applies any commands run at the top level to every crate in the workspace. Invoking cargo test will run all types of tests and that can take a long time.
- GitHub Essentials
- 我們都是數據控:用大數據改變商業、生活和思維方式
- Building Computer Vision Projects with OpenCV 4 and C++
- LibGDX Game Development Essentials
- Python絕技:運用Python成為頂級數據工程師
- 企業大數據系統構建實戰:技術、架構、實施與應用
- 文本挖掘:基于R語言的整潔工具
- 城市計算
- WS-BPEL 2.0 Beginner's Guide
- Scratch 3.0 藝術進階
- Python金融數據分析(原書第2版)
- gnuplot Cookbook
- 數字IC設計入門(微課視頻版)
- 數據庫技術及應用
- Hadoop 3實戰指南