14得票4回答
如何在成员方法闭包中使用结构体自身。

如何在闭包中调用方法?get_access_token方法可以根据self.get_base_url()设置新的访问令牌:fn fetch_access_token(_base_url: &String) -> String { String::new() } fn g...

14得票1回答
循环中的可变借用

我试图在循环内获取可变借用,但无法使其正常工作。我尝试了所有可能的保护机制、原始指针和其他所有方法。 struct Test<'a> { a: &'a str, } impl<'a> Test<'a> { pub fn new(...

14得票1回答
为什么在 Rust 的 `Cell<T>` 中,`set` 方法明确丢弃旧值?

为什么在Cell上定义的set方法,在最后一行明确地删除了old值?难道函数返回时不会自动释放内存吗? use std::mem; use std::cell::UnsafeCell; pub struct Cell&lt;T&gt; { value: UnsafeCell&lt;...

14得票1回答
什么情况下to_owned()不会克隆?

to_owned()的文档说明: 从借用数据创建拥有数据,通常是通过克隆。 但是没有明确说明克隆不会发生的条件。&ldquo;通常&rdquo;这个词相当模糊,我正在尝试出于性能原因删除.clone()调用。 有人能澄清一下吗?

14得票1回答
使用as_slice()时,“borrowed value does not live long enough”

我遇到了一个错误:extern crate rustc_serialize; // 0.3.24 use rustc_serialize::base64::{self, FromBase64, ToBase64}; fn main() { let a: [u8; 30] = [0;...

14得票1回答
如何在从成员函数调用的闭包中修改self?

我正在尝试计算合法的国际象棋走法,但是在满足借贷检查器方面遇到了问题。我有一个实现了这些方法的结构体Chess(非重要代码由...代替):// internal iterator over (possibly not legal) moves fn get_moves&lt;F&gt;(&am...

14得票1回答
这个错误是由编译器对RefCell的特殊知识引起的吗?

fn works&lt;'a&gt;(foo: &amp;Option&lt;&amp;'a mut String&gt;, s: &amp;'a mut String) {} fn error&lt;'a&gt;(foo: &amp;RefCell&lt;Option&lt;&amp;'a ...

13得票1回答
在Rust中,结束可变借用有哪些选项?

我正在与借用检查器抗争 - 真是奇迹中的奇迹。 虽然我通过添加一个代码块找到了解决方案,但我很好奇是否有其他方法可以结束可变借用,以便下一条语句可以在之后访问绑定。 目前为止,我已经做了这些:let mut canvas: Canvas = Canvas { width: 5, ...

13得票3回答
暂时移出借用的内容

我正在尝试替换可变借用中的一个值;将部分内容移动到新值中: enum Foo&lt;T&gt; { Bar(T), Baz(T), } impl&lt;T&gt; Foo&lt;T&gt; { fn switch(&amp;mut self) { *...

13得票2回答
为什么在这个例子中会出现“借用的值未能活得足够长”的错误提示?

编者注:本问题中的代码早于 Rust 1.0 版本。该代码的现代等效版本可以直接编译。 我仍在学习Rust,但很惊讶下面的代码能够编译通过:use std::iter::AdditiveIterator; fn main() { let range = [1,2,3,4,...