我想静态检查所有对未使用返回值的非void函数的调用.
实际上,这就像应用于__attribute__ ((warn_unused_result))所有非空函数一样,但当然对于一个不切实际的大型项目.
有没有可以提供此信息的静态分析工具?
我想在 amd64 主机系统上交叉编译 Rust 代码,以便在AWS Graviton2实例上运行。
基于Graviton 上的 C/C++ 入门指南,我似乎想要类似的东西armv8。Rust 支持的目标三元组列表中唯一这样的三元组以 开头thumbv8m。我对 ARM 一无所知,所以不确定这些是否是我想要的,如果是,是哪一个。
我正在使用include_bytes!宏将GLSL着色器编译为rust程序。但是,Cargo似乎没有意识到这一点:当我只修改着色器文件并用cargo run未编译的更新文件对其进行测试时,手动.rs操作包含着色器的文件即可。
我是否需要添加一些内容以明确Cargo.toml说明这种依赖性?
版本信息:
$ rustc --version && cargo --version
rustc 1.0.0-nightly (ecf8c64e1 2015-03-21) (built 2015-03-22)
cargo 0.0.1-pre-nightly (e689383 2015-03-16) (built 2015-03-16)
Run Code Online (Sandbox Code Playgroud) 这是我的测试代码:
use std::error::Error;
use std::fmt;
struct Handler {
error: String
}
#[derive(Debug)]
struct SpecificError;
impl fmt::Display for SpecificError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "SpecificError")
}
}
impl Error for SpecificError {}
impl<E: Error> From<E> for Handler {
fn from(e: E) -> Self {
Handler { error: format!("{}", e) }
}
}
fn fail1() -> Result<(), SpecificError> {
Err(SpecificError)
}
fn fail2() -> Result<(), Box<Error>> {
Err(Box::new(SpecificError))
}
fn handler() -> Result<(), Handler> {
fail1()?;
fail2()?; …Run Code Online (Sandbox Code Playgroud) 一些示例代码:(游戏围栏)
let data = [0, 1, 2, 3, 4];
let mut iter = data.iter();
println!("{}", iter.next().unwrap());
println!("{}", iter.skip(3).next().unwrap());
Run Code Online (Sandbox Code Playgroud)
按预期打印0和4.
我很好奇切skip片迭代器的操作是否是恒定时间?在源代码中我只找到了这个实现skip,这导致了Skip struct的Iterator实现.
这似乎是一个通用的O(n)跳过,我看不到任何可以做指针算术的基于指针的迭代器的专门化.
我错过了一些关于实施的内容skip吗?或者还有其他方法可以做到这一点吗?