小编Noc*_*ker的帖子

如何在 Rust 的实现中测试方法

我正在尝试增加 Rust 应用程序中的测试覆盖率。我已经阅读了很多有关测试公共函数和测试私有函数以及添加“tests”目录以添加集成测试的内容。但我还没有读过任何有关在实现中测试方法的内容。我尝试用谷歌搜索一下,但没有找到任何东西。

这是一个简单的例子,这是我实现测试的方式吗?

struct Rectangle {
    width: usize,
    length: usize,
}

impl Rectangle {
    pub fn new(width: usize, length: usize) -> Rectangle {
        Rectangle {
            width,
            length,
        }
    }

    fn area(&mut self) -> usize {
        self.width * self.length
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_rectangle() {
        let mut rectangle = Rectangle::new(4, 5);
        
        assert_eq!(20, rectangle.area())
    }
}
Run Code Online (Sandbox Code Playgroud)

testing methods rust

5
推荐指数
1
解决办法
2987
查看次数

交叉编译 Rust 的 SerialPort 包

我正在 Ubuntu 20.04.2 LTS 64 位上开发我的 Rust 项目。我已将项目设置为针对主机架构进行编译(使用cargo build)并针对 ARM 64 位的目标架构进行交叉编译(使用cargo build --target=aarch64-unknown-linux-gnu)。到目前为止,该项目交叉编译良好。在目标硬件平台上,有应用程序将与之交互的串行端口,因此我已将串行端口板条箱添加到我的项目中。该项目对于 Ubuntu 主机架构仍然可以正常编译,但我无法再让它针对 aarch64 taget 进行交叉编译。

我已将目标添加到 rustup:

$ rustup target list
...
aarch64-fuchsia
aarch64-linux-android
aarch64-pc-windows-msvc
aarch64-unknown-linux-gnu (installed)
aarch64-unknown-linux-musl
aarch64-unknown-none
aarch64-unknown-none-softfloat
...

Run Code Online (Sandbox Code Playgroud)

我已经安装了 rustup 工具链:

$ rustup toolchain list
stable-aarch64-unknown-linux-gnu
stable-x86_64-unknown-linux-gnu (default)
Run Code Online (Sandbox Code Playgroud)

当我运行 Cargo build 命令时,cargo build --target=aarch64-unknown-linux-gnu我在编译过程中收到以下错误:

$ cargo build --target=aarch64-unknown-linux-gnu
   Compiling libudev-sys v0.1.4
error: failed to run custom build command for `libudev-sys v0.1.4`

Caused by:
  process didn't …
Run Code Online (Sandbox Code Playgroud)

linux serial-port cross-compiling rust arm64

1
推荐指数
1
解决办法
1972
查看次数

标签 统计

rust ×2

arm64 ×1

cross-compiling ×1

linux ×1

methods ×1

serial-port ×1

testing ×1