首页 文章
  • 2 votes
     answers
     views

    在Rust中统一分配是什么意思?

    在Learning Rust With Entirely Too Many Linked Lists中,作者声称此代码是统一分配的 . 那是什么意思? struct Node { elem: i32, next: List, } pub enum List { Empty, More(Box<Node>), }
  • 5 votes
     answers
     views

    移动可变借入的所有权

    我的理解是,可变借款人可以将所有权转移给另一个可变借款人 . 但这一举动似乎与移动非指针变量有点不同 . 我们来看一个例子吧 . 当 compute() 第一次被调用时, p1 以下被移动到 p2 . 但在 compute() 回归之后,所有权似乎又回到了 p1 . fn compute(p2: &mut Point) { } fn reset(p1: &mut Point)...
  • 85 votes
     answers
     views

    无法摆脱借来的内容

    我不明白错误 cannot move out of borrowed content . 我收到了很多次,我总是解决它,但我从来没有理解为什么 . 例如: for line in self.xslg_file.iter() { self.buffer.clear(); for current_char in line.into_bytes().iter() { ...
  • 6 votes
     answers
     views

    往来于可变借入的结构

    有人可以解释为什么将值移动到借来的结构中是有效的,而不是将它们移出去?例如: struct S { v: Vec<u8> } fn move_v_out(s: &mut S) { let old_vecotr = s.v; // If removed, program compiles fine s.v = vec![]; } fn main() {...
  • 1 votes
     answers
     views

    工厂方法:实例寿命不够长

    我在Rust开发一个单词生成器 . 该应用程序包含两个主要结构: Letter 和 Alphabet . Letter 由单个字符和与其他字母关系的规则组成 . Alphabet 包含元音和辅音的向量,以及带有对这些向量中字母的引用的散列映射 . 这样做是为了可以在O(1)时间内检索字母规则 . 我已经创建了一个工厂方法来从json字符串读取字母表(下面的代码),但我收到一个错误,说明字母表实例...
  • 4 votes
     answers
     views

    为什么这里的 Value 会进入收盘而不是借入?

    Rust Book的Error Handling chapter包含有关如何使用 Option 和 Result 的组合子的示例 . 读取文件并通过应用一系列组合器将内容解析为 i32 并在 Result<i32, String> 中返回 . 现在,当我查看代码时,我感到困惑 . 在那里,在an_then的一个闭包中创建了一个本地 String 值,随后作为返回值传递给另一个组合子 ....
  • 5 votes
     answers
     views

    调用`drop`后移动的变量仍在借用?

    fn main() { let mut x: Vec<&i32> = vec![]; let a = 1; x.push(&a); drop(x); // x.len(); // error[E0382]: use of moved value: `x` } // `a` dropped here while still bor...
  • 4 votes
     answers
     views

    绕过“搬出借来的自我”检查员的优选模式

    考虑一种模式,其中有几个状态向调度程序注册,并且每个状态知道在收到适当事件时要转换到的状态 . 这是一种简单的状态转换模式 . struct Dispatcher { states: HashMap<Uid, Rc<RefCell<State>>>, } impl Dispatcher { pub fn insert_state(&mut...
  • 4 votes
     answers
     views

    多个生命周期和移动:借用`x`的赋值发生在这里

    我有一个带有函数 next() 的结构(类似于迭代器但不是迭代器) . 此方法返回修改后的下一个状态(保留原始状态) . 所以: fn next(&A) -> A . 我从一个简单的结构开始,我不需要生命周期(示例中的结构A),我扩展它以添加对新结构(结构B)的引用 . 问题是我现在需要为我的struct指定生命周期,由于某种原因我的方法 next() 拒绝再工作了 . 我怀疑每次...
  • 0 votes
     answers
     views

    借用检查器“不能移出借来的内容”[重复]

    这个问题在这里已有答案: Cannot move out of borrowed content when unwrapping 1回答 error[E0507]: Cannot move out of borrowed content 1回答 cannot move out of borrowed content when unwrapping a member variable i...
  • 2 votes
     answers
     views

    什么“TraitX for TraitY”在Rust中意味着什么?

    例如: trait TraitX { } trait TraitY { } impl TraitX for TraitY { } 我认为这意味着相同 impl<A: TraitY> TraitX for A { } 但错误消息暗示: $ rustc --version rustc 0.12.0-nightly (a70a0374e 2014-10-01 21:27:19 +0000...
  • 62 votes
     answers
     views

    Rust有什么而不是垃圾收集器?

    我理解Rust没有垃圾收集器,并且想知道当绑定超出范围时如何释放内存 . 所以在这个例子中,我理解Rust在超出范围时回收分配给'a'的内存 . { let a = 4 } 我遇到的问题首先是如何发生这种情况,其次这不是一种垃圾收集?它与“典型”垃圾收集有何不同?
  • 4 votes
     answers
     views

    什么在Rust中意味着什么?

    Rust中的 :: 语法是什么,如here所示,意思是: fn chunk(n: uint, idx: uint) -> uint { let sh = uint::BITS - (SHIFT * (idx + 1)); (n >> sh) & MASK } 在像Haskell这样的语言中,它意味着一个类型提示,但是这里编译器已经有了这个值类型的注释,所...
  • 4 votes
     answers
     views

    _在Rust中的类型错误中意味着什么?

    我收到了这个错误: error: mismatched types [E0308] process(s); ^ help: run `rustc --explain E0308` to see a detailed explanation note: expected type `&...
  • 1 votes
     answers
     views

    如何在具有泛型参数的结构上实现非泛型特征

    我正在使用I2CDevice trait,它在外部包中定义,如下所示: pub trait I2CDevice { type Error: Error; // members } 它或它的任何成员都不包含任何通用参数 . 我正在为任何 I2CDevice 实现创建一个装饰器,它委托给内部/具体 I2CDevice ,添加控制台打印以用于诊断目的: struct debugDevi...
  • 4 votes
     answers
     views

    '#[derive(Debug)]'究竟在Rust中意味着什么?

    #[derive(Debug)] 究竟是什么意思?它与 'a 有关吗?例如: #[derive(Debug)] struct Person<'a> { name: &'a str, age: u8 }
  • 4 votes
     answers
     views

    在Amazon Linux上静态链接ffmpeg-sys失败,未定义引用

    我的项目取决于配置为静态构建的 ffmpeg-sys crate,如下所示: [dependencies.ffmpeg-sys] version = "3.4.1" default-features = false features = ["avcodec", "avformat", "swresample", &q...
  • 6 votes
     answers
     views

    什么0u8在Rust中意味着什么?

    我正在阅读The Rust Programming Language并且遇到了这种表示法: 0u8 . #![allow(unused_variables)] fn main() { let some_u8_value = 0u8; match some_u8_value { 1 => println!("one"), 3...
  • 3 votes
     answers
     views

    什么()在Rust中意味着什么? [重复]

    这个问题在这里已有答案: What type is the “type ()” in Rust? 2个答案 What does an empty set of parentheses mean when used in a generic type declaration? 1回答 我正在尝试理解类似于以下的功能: fn some_func(arg1: str, arg2: str) ...
  • 3 votes
     answers
     views

    TCP流中何时出现损坏的管道?

    我正在尝试在Rust中编写一个echo服务器 . use std::net::{TcpStream, TcpListener}; use std::io::prelude::*; fn main() { let listener = TcpListener::bind("0.0.0.0:8000").unwrap(); for stream in listen...
  • 0 votes
     answers
     views

    不满足特征绑定`T:std :: fmt :: Display`

    我正在编写一个基本的二叉树结构,我想显示一个节点 . 似乎Rust在显示泛型类型时遇到问题,我收到此错误: error[E0277]: the trait bound `T: std::fmt::Display` is not satisfied --> src/main.rs:55:60 | 55 | write!(f, "Node data: {} l...
  • 0 votes
     answers
     views

    E0308具有简单泛型函数的不匹配类型[重复]

    这个问题在这里已有答案: How do I require a generic type implement an operation like Add, Sub, Mul, or Div in a generic function? 2个答案 我是Rust的新手,我正在尝试编写自己的简单泛型函数 . fn templ_sum<T>(x : T, y : T) -> T ...
  • 14 votes
     answers
     views

    为什么不能满足这种更高的kinded生命周期相关类型特征限制?

    trait A<'self_>: 'self_ { type I; } trait AMut where Self: for<'self_> A<'self_>, for<'self_> <Self as A<'self_>>::I: 'static { fn m...
  • 4 votes
     answers
     views

    特质界限不满意

    Coroutine-rs 这是我试图调用的函数: #[inline] pub fn spawn<F>(f: F) -> Handle where F: FnOnce(&mut Coroutine) + Send + 'static { Self::spawn_opts_impl(Box::new(f), Options::default()) } 然后我...
  • 0 votes
     answers
     views

    Rust中不满足特征限制

    我正在尝试在Rust中编写一个Tic Tac Toe游戏,但是这个用于更改字段的功能不起作用,我不知道它有什么问题: fn change_field(mut table: [char; 9], field: i32, player: char) -> bool { if field > 0 && field < 10 { if table[...
  • 1 votes
     answers
     views

    在函数中使用`draw_filled_circle_mut`:trait bound不满意

    使用 imageproc crate,我可以在图像上调用 draw_filled_circle_mut : let mut img = ImageBuffer::from_pixel(640, 480, Rgb([255, 0, 0])); draw_filled_circle_mut(&mut img, (300, 300), 50, Rgb([0, 255, 0])); 但是,如果...
  • 0 votes
     answers
     views

    问号操作符生锈错误“特征限制不满意”[重复]

    这个问题在这里已有答案: Why do try!() and ? not compile when used in a function that doesn't return Option or Result? 4个答案 use std::io; use std::fs::File; use std::io::prelude::*; fn main() { let mut csv ...
  • 13 votes
     answers
     views

    派生特征会导致意外的编译器错误,但手动实现会起作用

    这段代码(playground): #[derive(Clone)] struct Foo<'a, T: 'a> { t: &'a T, } fn bar<'a, T>(foo: Foo<'a, T>) { foo.clone(); } ......不编译: error: no method named `clone` found f...
  • 0 votes
     answers
     views

    在STDIN之后编译时获得不匹配的类型,然后在输入时进行数学运算

    我正在尝试编写一个生锈程序,将输入温度从华氏温度转换为celcius,反之亦然 . 我对Rust仍然很陌生,而且这本书提到了将这个程序作为一种学习方式 . 当我尝试编译代码时,我不断收到错误类型错误 . 可以在下面看到错误,我的代码在错误下方格式化 . error[E0308]: mismatched types --> temperature.rs:12:28 | 12 | ...
  • 1 votes
     answers
     views

    货物兰特编译错误

    这是一个非常基本的问题,请耐心等待 . 我有一个项目需要使用旧版Rust(货物0.19.0-夜间c995e9e 2017-03-17) . 它使用 rand 所以我添加了 rand="0.4.3" 作为依赖项 . 当注册表更新时, rand 0.5.5 (最新)会自动下载,并且它也会遇到"break loop"错误,该错误在前一段时间内已经稳定下来 . 我不...

热门问题