我听说货物有能力自动重新编译已更改的源文件,但我很难弄清楚如何告诉它这样做.
现在,我手动运行cargo build或cargo run每次要输入检查我的代码.我宁愿简单地保存文件并在邻近的终端窗口中查看结果.
如果你仍然不知道我在说什么,我正在寻找相当于sbt ~compile或等的货物sbt ~run.
这似乎很难找到,所以我开始怀疑它是否真的得到了支持.可能有人说货物可以检测到已更改的文件并重新编译它们的意思是货物可以检测到未更改的文件并避免重新编译它们,例如make.
锈有能力在构建检查配置时间,例如,#[cfg(target_os = "linux")]或者 if cfg!(target_os = "linux") {...},在那里target_os是一个功能.
是否有可以在Rust中检查的所有(或至少是常用的)功能的列表?
查看有关属性的 相关问题是否有任何标准属性的详尽列表?.
在我的Cargo.toml我有这个块
[package]
name = "packagename"
version = "0.1.0"
authors = ["me <abuse@gmail.com>"]
Run Code Online (Sandbox Code Playgroud)
如何在运行时获取 [package].version 是什么?
我正在尝试让 Rust 在 Android 上工作。但是,当我尝试交叉编译到 android 时,出现以下链接错误:
$ cargo build --target=arm-linux-androideabi
Compiling <project> v0.1.0 (<project>)
error: linking with `/opt/android-sdk/ndk/23.0.7599858/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi31-clang` failed: exit status: 1
(very long toolchain command from cargo)
ld: error: unable to find library -lgcc
clang-12: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我已经安装了 ndk 并将链接器更改.cargo/config为 android clang 链接器。我还尝试了独立工具链,得到了相同的结果。我使用的指南如下:https://mozilla.github.io/firefox-browser-architecture/experiments/2017-09-21-rust-on-android.html
crate-type = ["rlib"]使用代替时交叉编译确实有效crate-type = ["cdylib"],但我需要一个.so文件而不是.rlib文件。
如果相关的话,我正在使用 Manjaro Linux。
我刚刚开始研究BevyRust 的游戏引擎。它有一个称为 的功能dynamic,可以启用动态链接,以加快开发过程中的编译时间。但是,建议我们在构建发布时禁用此功能。
有没有办法告诉 Cargodynamic为调试版本启用该功能,但为发布版本禁用该功能?或者我必须在跑步前亲自记住更改bevy = { version = "0.5.0", features = ["dynamic"] }为bevy = "0.5.0"in ?Cargo.tomlcargo build --release
根据doc.rust-lang.org
cargo rustdoc\n\n使用指定的自定义标志构建包的文档
\n
cargo doc\n\n构建包的文档
\n
两者有什么区别?据我了解,cargo rustdoc就像cargo doc,但它允许更多 lints\xe2\x80\x94 例如:
#![deny(rustdoc::broken_intra_doc_links)]\nRun Code Online (Sandbox Code Playgroud)\n它是否正确?奇怪的是,cargo rustdoc在某些情况下,它也会失败cargo doc。例如
some/folder on some-branch [$!] via v1.60.0-nightly\n\xe2\x9d\xaf cargo doc\n Finished dev [unoptimized + debuginfo] target(s) in 0.53s\n\nsome/folder on some-branch [$!] via v1.60.0-nightly\n\xe2\x9d\xaf cargo rustdoc\nerror: manifest path `some/folder/Cargo.toml` is a virtual manifest, but this command requires running against an actual package …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用 reqwest 和 self_update 的 CLI 应用程序。self_update 也使用 reqwest。我希望我的应用程序使用 rustls 而不是引入 openssl 依赖项。Cargo.toml 允许选择依赖项的功能:
[dependencies.reqwest]
version = "0.10"
default-features = false
features = ["rustls-tls", "json", "blocking"]
Run Code Online (Sandbox Code Playgroud)
如果子依赖项有效的话那就太酷了:
[dependencies.self_update.reqwest]
version = "0.10"
default-features = false
features = ["rustls-tls", "json", "blocking"]
Run Code Online (Sandbox Code Playgroud)
我还查看了替换部分,但只有这样的东西才适用于我分支代码的地方:
"reqwest:0.10.1" = { branch = "rustls", git = "https://github.com/ctaggart/reqwest" }
Run Code Online (Sandbox Code Playgroud)
但我想要的是默认功能和支持的功能:
"reqwest:0.10.1" = { tag="v0.10.1", git = "https://github.com/seanmonstar/reqwest", default-features = false, features = ["rustls-tls", "json", "blocking"] }
Run Code Online (Sandbox Code Playgroud)
如何使用 Cargo 配置 Reqwest 或 Tokio 或任何其他高度可配置的非直接依赖项的功能?
我尝试使用推荐的安装脚本在 Raspberrypi 4 上安装 rust:
pi@raspberrypi:/tmp $ curl https://sh.rustup.rs -sSf | sh
Run Code Online (Sandbox Code Playgroud)
但重启后,cargo找不到:
pi@raspberrypi:~ $ cargo
error: command failed: 'cargo'
error: caused by: No such file or directory (os error 2)
Run Code Online (Sandbox Code Playgroud)
这可能与安装过程中报告的情况有关(error reading rustc version)(完整的安装日志位于底部):
info: default toolchain set to 'stable-aarch64-unknown-linux-gnu'
stable-aarch64-unknown-linux-gnu installed - (error reading rustc version)
Run Code Online (Sandbox Code Playgroud)
以下是完整的安装日志:
pi@raspberrypi:/tmp $ curl https://sh.rustup.rs -sSf | sh
info: downloading installer
Welcome to Rust!
This will download and install the official compiler for the Rust
programming language, and …Run Code Online (Sandbox Code Playgroud) rust ×10
rust-cargo ×10
android-ndk ×1
git ×1
linux ×1
node.js ×1
path ×1
rust-crates ×1
rustdoc ×1
rustup ×1