问题标签 [rust-obsolete]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
757 浏览

rust - 通过共享框 ptr 访问时,如何使我的结构字段可变?

编者注:此代码来自 Rust 1.0 之前的版本,在语法或语义上不是有效的 Rust 1.0 代码。

因此,将共享框指针的范围划分为学习练习。纯学术练习。

收到此编译器错误,我有点惊讶:

是什么赋予了?

如果我切换到 Owned Box 指针,错误就会消失。这是对托管指针访问的某种限制吗?

0 投票
3 回答
14207 浏览

rust - 你将如何在 Rust 中实现双向链表?

请注意,这个问题指的是 Rust 1.0 之前的 Rust 版本。尽管语法已更改,但概念仍然有效。

您可以使用拥有的指针轻松实现仅转发的链表,例如:

但是,想象一下,如果您想有效地实现一个支持四种基本操作的队列:

  • push: 添加到列表末尾
  • pop: 从列表末尾移除并返回
  • unshift: 添加到列表的前面
  • shift: 从列表末尾移除并返回

在具有普通指针的语言中,您可以使用双向链表和存储firstlast指向列表中第一个和最后一个元素的根对象来实现这一点。

我看不出你将如何在 Rust 中实现它。

我可以隐约猜到你会使用一堆引用,也许是这样的:

...但我看不出您将如何管理这些变量的生命周期范围。

谁能指出我的方向,或者一个类似的例子,它涉及复杂的生命周期和对象之间的引用?

(这种代码风格的另一个典型示例是观察者模式,其中许多对象必须将事件更新发布到单个位置,例如UINode<>---- EventObserver<>---- EventCore<>---- UINodes;多个对象在一个复杂的层次结构共享指针,其中事件从叶节点传播到某个核心,然后被推送到不同的叶节点)

0 投票
1 回答
5762 浏览

arrays - 比较定长数组

编者注:这个问题是在 Rust 1.0 之前提出的,并且使用了不再有效的语法。另外,这个问题中的具体问题在 Rust 1.0 中不再出现。

有一个结构包含唯一的字段,一个固定宽度的字节数组。有人会认为从std::cmpfor 实现特征很简单,但推导不起作用:

文档建议 Eq 是为&[]和实现的,而~[]不是为固定宽度数组实现的。手动强制&[]也不起作用:

Rust 参考手册中的这一行可以解释它:

产生确定大小向量的表达式不能在期望大小不定向量的上下文中进行评估;必须将确定大小的向量内容复制到一个不定大小的不同向量中。

动机尚不清楚,但我想这与存储长度有关。

无论如何,是否可以使用 for 的实现来比较两个固定长度的数组&[],而无需复制?

0 投票
2 回答
24084 浏览

rust - 在单独的模块中使用未声明的类型或模块`std`

我有以下代码:

编译时出现错误:

但是,删除内部模块并自行编译它包含的代码可以正常工作:

我在这里想念什么?如果模块位于单独的文件中,我会收到相同的错误:

main.rs

a.rs

0 投票
2 回答
2914 浏览

rust - 为什么在这个例子中我得到“借来的价值不够长”?

编者注:这个问题中的代码早于 Rust 1.0。此代码的等效现代版本按原样编译。

我仍然在学习 Rust 的小步骤,并对以下内容感到惊讶。

我不明白为什么这段代码会编译:

虽然这不是:(只是向上移动.iter()

导致此错误:

我确定它与 Rust 作用域等有关,但我不确定我是否理解将方法调用移动到不同的行会产生什么影响。

0 投票
2 回答
1789 浏览

rust - 获取整数的基本输入

我很惊讶我似乎无法浏览 rust 的文档来找到任何描述 io 的案例,有人可以向我解释一下如何使用基本 io 来让用户输入比如说一个整数吗?也许在该被诅咒的文档中可以在哪里找到 io 详细信息?谢谢

0 投票
1 回答
1266 浏览

rust - Conditional compilation in Rust 0.10?

I have been using 0.10 and recently setup a build of nightly to experiment with Box and friends.

Now I have code for 0.10 using ~str and code for pre0.11 using String because of to_owned being obsolete. I thought I could do this:

And pass --cfg rust_version:0.11 during compilation. But the compiler still chokes on the now removed ~ operator. Is there a way to have code that works under both 0.10 and the as yet unreleased 0.11 using conditional compilation or some other mechanism?

I guess I could fall back to using cpp and #ifdef but that seems like stepping out of the Rust mindset.

0 投票
1 回答
2528 浏览

enums - 尝试使用多态性时出现“错误:结构定义中不允许特征边界”

编者注:这个问题是在 Rust 1.0 之前和某些功能实现之前提出的。代码原样在今天有效。

我正在用 Rust 编写棋盘游戏 AI。游戏有多个规则集,我希望将规则逻辑与棋盘布局分开(它们目前是混合的)。在像 Ruby 这样的语言中,我会让单独的规则集实现相同的接口。在 Rust 中,我考虑过使用 trait 并Board使用我想要使用的规则集(例如Board<Rules1>::new())对 进行参数化。

Board不允许在结构(如 )中保存实现此特征的对象。我可以把它Rules变成一个enum,但它看起来有点乱,因为我不能为枚举的成员定义单独的实现。使用模式匹配会起作用,但这会沿着函数轴而不是沿着结构轴拆分功能。这只是我必须忍受的东西还是有某种方式?

以下代码是我想使用的:

它产生以下错误:

0 投票
1 回答
5379 浏览

rust - rust 二叉树实现的困难

我正在尝试在 Rust 中实现一个简单的二叉搜索树,但我很难确定插入节点的问题。我正在使用以下数据结构和函数。

在调用printTree(&createBinarySearchTree(vec![43,2,45,7,72,28,34,33]))树时只会打印出来33,34,不幸的是我无法调试,因为使用调试信息进行编译会导致编译器错误。此外,当我在插入时匹配分支时,我尝试返回一个分支,但这需要我以我无法理解的方式克隆叶子/授予所有权。所以任何帮助将不胜感激

干杯

0 投票
1 回答
3694 浏览

rust - 收集到 rust 中拥有的字符串的拥有的 vec

我正在尝试使用以下方法将 vec 字符串收集到 rust 中:

我收到以下错误:预期 std::iter::FromIterator<&str>,但找到 std::iter::FromIterator<~str> (str 存储不同:预期&但找到~

我尝试使用类型提示但没有成功