rust相关内容

`std::Mem::swap`是如何工作的?

交换同一类型的两个可变位置上的值,而不取消初始化或复制其中任何一个。 use std::mem; let x = &mut 5; let y = &mut 42; mem::swap(x, y); assert_eq!(42, *x); assert_eq!(5, *y); (出自offical Rust doc) 如何在不复制的情况下交换两个值?值42是如何从y变为x的?这应该 ..
发布时间:2022-09-23 17:15:47 其他开发

在Visual Studio代码中实现Rust程序的远程调试

我正在开发一个在基于64位ARM处理器的嵌入式Linux板上运行的Rust程序。目标的嵌入式Linux是使用Yocto(Dunfell)构建的。我的Rust开发环境是运行在Linux上的Visual Studio代码(Ubuntu)。如何将其设置为在目标板上进行程序的远程调试? 我预计顺序如下: 编译目标的Rust程序(用于调试)。 将调试bin文件复制到目标。 使用gdb服务器或 ..
发布时间:2022-08-29 14:18:38 其他开发

是否存在具有单个强所有者和多个弱引用的共享指针?

我正在寻找类似于Arc/Rc的智能指针,只是它不允许共享所有权。 我希望拥有所需数量的rc::Weak引用,但我只需要一个强引用,即所有者。我想用类型系统来强制执行这一点。 Arc/Rc可以克隆,并且可以在多个位置拥有它们。 卷起我自己的智能指针将是一种选择,但我相信这样的数据结构应该已经存在,即使在标准库之外。 我正在寻找提供这种接口的数据结构: impl MySm ..
发布时间:2022-08-26 14:04:15 其他开发

我如何命名一组类型边界?

如果我有一长串必须在许多地方重复的类型边界,我如何为它们命名? 例如,如果不是: fn foo(t: T) -> T where T: Copy, T: Debug { ... } 我想写: fn foo(t: T) -> T where T: CopyDebug { ... } 其中CopyDebug定义为Copy ..
发布时间:2022-08-16 18:05:49 其他开发

如何做一个逆序的for循环?

编者按:这个问题是在Rust 1.0发布和..“Range”运算符引入之前提出的。问题的代码不再代表当前样式,但下面的某些答案使用了可以在Rust 1.0及更高版本中使用的代码。 我在Rust by Example website上玩,想反向打印FizzBuzz。以下是我尝试的内容: fn main() { // `n` will take the values: 1, 2, ..
发布时间:2022-07-22 19:36:35 其他开发

为包含可迭代字段的结构实现迭代器特征

我想为包含可迭代字段的结构实现Iterator特征。在结构上迭代应该会产生与在字段上迭代得到的结果相同的结果。这就是我想要的(显然不起作用): struct Foo { bar: Vec, } impl Iterator for Foo { type Item: &char; // Error: expected named lifetime parameter ..
发布时间:2022-07-20 19:27:59 其他开发

对期权的提升函数

有没有办法提升一个简单的函数,就像这样 fn add(a:i32, b:i32) -> i32 {a+b} 对Option(或任何其他一元类型)进行操作,类似于在Haskell中使用Applicative 我知道此解决方案: pub fn add(a: Option, b: Option) -> Option { Some(a? + b?) ..
发布时间:2022-07-18 11:12:53 其他开发

Rust:在LLVM位码中包含依赖项

我正在使用SAW验证一些Rust代码。SAW要求您编译为LLVM bitcode,然后可以导入和验证。我知道您可以使用--emit=llvm-bc标志来生成位码,这对于没有依赖项的项目非常有效。 尝试编译使用外部板条箱的项目时会出现此问题。下面是一个Cargo.toml文件示例: [package] name = "foobar" version = "0.1.0" edition = ..
发布时间:2022-07-01 18:49:12 其他开发

我可以用Bincode反序列化具有可变长度前缀的向量吗?

我遇到了Rust二进制代码库的问题。当它序列化向量时,它始终假定前缀长度为8字节。当您始终使用BINCODE编码数据时,这是一个很好的假设,因为BINCODE可以读取它自己的序列化数据。 我所处的情况是我无法影响序列化程序,因为它不是我编写的,并且由于遗留原因,它必须保持不变。它将其向量编码为带有长度前缀的数组,其中前缀始终为2字节(或者在某些情况下为4字节,但我非常了解这些情况。一旦我知道 ..
发布时间:2022-06-28 18:30:19 其他开发

我如何才能向后迭代?

我正在尝试创建pub fn sing(start: i32, end: i32) -> String,它返回对start和end之间的每个数字重复调用pub fn verse(num: i32) -> String的结果的串联字符串。 我已经在谷歌上搜索了答案,似乎Rust String concatenation回答了我的问题,如果我甚至用playground编写代码,它都可以工作,但是: ..
发布时间:2022-06-27 20:41:29 其他开发

如何基于动态变量进行匹配?

是否可以匹配动态变量而不是仅匹配文字? 在此代码中,第一个match应该与注释掉的match(number[0]Being0和number[1]Being1)相同: const NUMBERS: [i8; 2] = [0, 1]; fn test() { let current = 5; let string = match current % 2 { ..
发布时间:2022-06-27 11:32:07 其他开发

Rust会优化掉未使用的函数参数吗?

我有一个 类型的函数 f: fn(x: SomeType, y: Arc) -> ISupposeTheReturnTypeDoesNotMatter 编译时(优化或不优化),y是否会被优化? y的用意是限制f正在运行的实例数量,如果y被引用太多次,f的调用方将不会调用f,直到y的引用计数减少。 编辑:澄清我的意图 目的是控制正在运行的http请求的数量(由上面的 ..
发布时间:2022-06-11 23:45:38 其他开发