rust相关内容

在 Rust 中动态创建任一方向的范围

我正在学习 Rust,最近进行了一项练习,我必须遍历可能朝任一方向发展的数字.我尝试了以下方法,结果出乎意料. #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]结构点{x: i32,是:i32}fn 测试(){让 p1 = 点 { x: 1, y: 8 };让 p2 = 点 { x: 3, y: 6 };让 all_x = p1.x..=p2. ..
发布时间:2022-01-24 20:01:10 其他开发

“多态"的 Rust 特征的简单组织;返回

我有一个名为 Frame 的基本结构,它对大量计算很有用:. pub struct Frame;{grid_val: Vec,grid_space: Vec Frame 可以用来描述最基本的计算,但有时会出现更复杂的问题,我需要添加更多的几何信息.所以我对每个几何图形都使用了合成: pub struct Sphere{网格:框架,半径:T}pub struct 双曲线{to ..
发布时间:2022-01-24 16:42:40 其他开发

如何从 Rust 中的 File 或 stdin 进行多态 IO?

我正在尝试实现一个“多态"Input 枚举,它隐藏了我们是从文件读取还是从标准输入读取.更具体地说,我正在尝试构建一个具有 lines 方法的枚举,该方法将依次“委托"调用包装到 BufReader 中的 File 或 StdInLock (两者都有 lines() 方法). 这是枚举: 枚举输入{控制台(std::io::StdinLock),文件(std::io::Bu ..
发布时间:2022-01-24 16:34:56 其他开发

如何为盒装特征对象实现`serde::Serialize`?

我在尝试为结构创建通用向量时遇到了问题.这是我的第一次尝试: #[derive(Serialize)]结构卡{部分:Vec>}#[派生(序列化)]struct Section{标头:字符串,小部件:Vec} 这给我带来了一个错误,即 Sized 未实现并且 WidgetTrait 大小在编译时未知. 我的下一个尝试是像这样使用 Box ..
发布时间:2022-01-24 16:09:49 其他开发

在 Rust 中,我可以在不硬编码值的情况下实例化我的 const 数组吗?编译时评估?

我正在尝试在 Rust 中实例化一个数组.这是我可以在运行时执行此操作的一种方法: 让 mut t = [0_u32;65];对于我在 0..t.len() {t[i] = ((i as f64).sin().abs() * 2.0_f64.powf(32.0)).floor() as u32;} 但是,由于我永远不会更改这个数组的值,而且我会经常使用这些值,所以我认为这可能是一个很好的机会来 ..
发布时间:2022-01-23 23:47:47 其他开发

Rust 中的常量值被内联是什么意思?

文档 const: 常量在程序的整个生命周期中都存在.更具体地说,Rust 中的常量在内存中没有固定地址.这是因为它们有效地内联到使用它们的每个地方.因此,对相同常量的引用不一定保证引用相同的内存地址. 我只见过 C++ 中的“内联函数",但从未见过内联常量值.什么是对它如何工作的初学者友好的解释? 我也对“内存中没有固定地址"感到困惑.这是否意味着每次我们使用 const 值时 ..
发布时间:2022-01-23 23:46:58 其他开发

Rust 中的不可变变量和 const 变量有什么区别?

我了解到,如果一个变量没有使用 mut 显式声明为可变的,它就会变成不可变的(声明后不能更改).那么为什么我们在 Rust 中有 const 关键字呢?他们不一样吗?如果不是,它们有何不同? 解决方案 const,在Rust中,是constant的缩写,与compile-time有关评价.它出现了: 声明常量时:const FOO: usize = 3; 在声明编译时可评估函数时: ..
发布时间:2022-01-23 23:37:53 其他开发

无法多次通过管道传入或传出生成的子进程

我希望能够使用 Rust 生成一个子 shell,然后反复向它传递任意命令并处理它们的输出.我在网上找到了很多示例,向我展示了如何传递单个命令并接收其单个输出,但我似乎无法重复执行. 例如,下面的代码挂在注释之后的行.(我想可能 read_to_string() 会阻塞,直到它从子进程接收到标准输出,但如果是这样,我不明白为什么该输出不会出现......) 让 mut child_shel ..
发布时间:2022-01-23 08:26:18 其他开发

使用哪个 std::sync::atomic::Ordering?

std::sync::atomic::AtomicBool 的所有方法 采用我以前没有使用过的内存排序(Relaxed、Release、Acquire、AcqRel 和 SeqCst).在什么情况下应该使用这些值?该文档使用了我不太了解的令人困惑的“加载"和“存储"术语.例如: 生产者线程改变由 Mutex 持有的一些状态a>,然后调用 AtomicBool::compare_and_swa ..
发布时间:2022-01-22 20:20:11 其他开发

Rust 不接收来自 C++ 的 UDP 消息

我正在使用 UDP 创建服务器/客户端范例,但 Rust 服务器没有接收 C++ 客户端消息.我已经能够成功地进行 Rust 服务器/Rust 客户端和 C++ 服务器/Rust 客户端通信. 这让我相信我的 C++ 代码存在问题,或者在将 C++ 缓冲区发送到 Rust 时存在某种类型的错误通信,但我使用了我认为有效的代码.这只是从同一台计算机发送和发送到同一台计算机,尚未扩展到计算机到计 ..
发布时间:2022-01-22 17:00:48 C/C++开发

UdpSocket.recv_from 因“文件结束"而失败但我可以在 Wireshark 中看到传入的包

编者注:此代码示例来自 Rust 1.0 之前的版本,不是有效的 Rust 1.0 代码.问题中讨论的概念仍然有效. 我正在尝试使用 Rust 进行 torrent 抓取.我可以在 Wireshark 中看到传入的包,但我的 recv_from 调用总是返回 Error("End of file").这是我的程序: 使用 std::io::net::ip::{Ipv4Addr, Socke ..
发布时间:2022-01-22 16:59:39 其他开发

如何创建堆栈分配的类似矢量的容器?

您将如何创建一个堆栈分配的类似矢量的容器,它可以包含的元素数量具有固定的上限?你可以在下面看到我的尝试,但它没有编译: //以下是 crate 级别#![特征(unsafe_destructor)]使用标准::内存;使用标准::ptr;使用 std::slice::Iter;pub struct StackVec{缓冲区:[T;10],len:使用大小,}实现StackVec{ ..
发布时间:2022-01-22 12:15:45 其他开发

如何有条件地检查枚举是否是一个变体?

我有一个有两个变体的枚举: 枚举数据库类型 {记忆,RocksDB,} 为了在检查参数是 DatabaseType::Memory 还是 DatabaseType::RocksDB 的函数中设置条件 if,我需要什么? fn 初始化(数据存储:DatabaseType)->结果{如果/* 内存 */{//.......} else if/* RocksDB */{//....... ..
发布时间:2022-01-20 23:23:00 其他开发

如何在不使用时有条件地提供默认参考而不执行不必要的计算?

我有一些变量通过引用传递到我的函数中.我不需要改变它或转移所有权,我只看它的内容.如果内容处于某种状态,我想将值替换为默认值. 例如,我的函数接受 &Vec,如果 Vec 为空,则将其替换为 vec!["empty";]: fn accept(mut vec: &Vec) {如果 vec.len() == 0 {vec = &vec!["empty".to_string() ..
发布时间:2022-01-20 23:16:26 其他开发

如何使用 GDB 或 LLDB 之类的调试器在 Rust 中调试 crate?

我正在写一个新的板条箱.我为它编写了一些测试并使用 cargo test 运行测试.之后,在 target 文件夹中生成了一些 test_xxx 可执行文件.我在 Cargo.toml 中启用了调试选项.通过运行 gdb targets/test_xxx,我可以列出和调试 test_xxx 可执行文件中的代码.但是,我无法进入板条箱中的功能.没有调试信息.如何构建/链接 crate 以包含其调试信 ..
发布时间:2022-01-20 20:13:43 其他开发