rust

    0热度

    1回答

    我对结构有一个可变引用,我想通过传递一个函数来更改它的一个字段,并将结果设置为该字段的新值。但是,我收到“无法移出借来的内容”编译错误。 这是证明我的问题,一个简约的例子: struct InnerStruct { num: usize, } struct MyStruct { inner_struct: InnerStruct, } fn do_something

    0热度

    1回答

    我需要检查标识符是否以下划线开头。这不起作用: #[macro_export] macro_rules! UNDECORED { (_$_i:ident) => {... do something if underscored}; ($_i:ident) => {... do something else}; } 错误在哪里?

    1热度

    1回答

    我试图设置两个线程之间的双向通信:子线程既可以发送到父进程,也可以从父进程接收,父进程可以发送去和从孩子接收。由于这样的事实,在锈通道是单向的,我使用的是一组双通道的,像这样的组织(从我家酿线程库代码段): let (tx, rx) = channel(); let (tx2, rx2) = channel(); (Endpoint { sender: tx2, rece

    1热度

    3回答

    我想读取文件的一些原始字节,所以我查看了文档,并将一个函数放在一起,看起来应该将字节读入一个向量并读取从头开始的32位整数。 fn filetobytes(name: &'static str) -> Vec<u8> { let file = File::open(name).expect("No such file"); let filebytes: Vec<u8> = fi

    1热度

    1回答

    我在nom中编写了一个完全无状态的分析器,现在我需要将它包装在几个有状态的层中。 我有一个名为alt_fn的顶级解析函数,它将为我提供解析输出的下一位,作为枚举变体,其细节可能不重要。 我有三件事情,我需要做的是涉及国家: 1)我需要的,如果存在一个不可变的HashMap比赛是一部分有条件地执行对alt_fn输出转换我State结构。这应该基本上像一个map!但作为一个方法调用我的结构。事情是这样

    -1热度

    1回答

    我在读The Rustonomicon,并且遇到了它的section on poisoning。一个类型中毒的书面例子是当一个“互斥体将在一个恐慌期间如果它的一个MutexGuard(它获得锁定时返回的东西)在一个恐慌期间被丢弃”,“(Rustonomicon,第7.2节第3段) 我很漂亮,但突然很好奇。 为了努力寻找类型中毒的实施示范,谷歌搜索“如何毒害一种类型”产生无用的结果,从化学毒物类型列

    0热度

    1回答

    关于这个特定的错误信息已经有几个问题。我把它们全部读了一遍,但我无法弄清楚我在这里面对的确切问题是什么,也不知道我该如何解决它。 我有一个struct对传入的参数有要求,我想提供一些便捷函数来构造一个新的实例。这里说到: use std::io::{Cursor, Read, Seek}; pub struct S<R: Read + Seek> { p: R, } impl<

    -3热度

    1回答

    我在TimeTravel中尝试更改date的值。评论表明我想要什么样的价值,但这不是我得到的。 use std::cell::Cell; #[derive(Debug, Clone)] pub struct TimeTravel { pub date: Cell<i32>, } impl TimeTravel { pub fn new() -> Self {

    1热度

    2回答

    我刚才了解到,使用泛型的结构声明为struct Foo<T>,并且实现声明为impl<T> Foo<T>。该book解释下列方式的差异: 注意到,我们才能在类型Point<T>使用T只是impl后申报T。在impl之后声明T为普通类型是Rust如何知道Point中的尖括号中的类型是泛型类型而不是具体类型。 再次,我是一个新手,也没有同样的论点具有申报struct<T> Foo<T>(甚至可能fn<

    3热度

    2回答

    我只是实现了一个简单的特质,以保持一个结构属性的历史: fn main() { let mut weight = Weight::new(2); weight.set(3); weight.set(5); println!("Current weight: {}. History: {:?}", weight.value, weight.history);