相关疑难解决方法(0)

在变量名之前和":"之后放置"mut"有什么区别?

这是我在Rust文档中看到的两个函数签名:

fn modify_foo(mut foo: Box<i32>) { *foo += 1; *foo }
fn modify_foo(foo: &mut i32) { *foo += 1; *foo }
Run Code Online (Sandbox Code Playgroud)

为什么不同的位置mut

似乎第一个函数也可以声明为

fn modify_foo(foo: mut Box<i32>) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

variables syntax reference mutable rust

51
推荐指数
3
解决办法
5734
查看次数

如何将实现特定特征的对象数组传递给函数?

为了学习Rust语法,我决定实现一个对传入数组进行排序的函数:

fn sort(array) {
    // actual sorting
}
Run Code Online (Sandbox Code Playgroud)

这个问题中,我发现了如何传递数组并更改其内容,但除此之外,数组必须包含可以比较的类型.我找到了这个std::cmp::PartialOrd特性,并发现数组的元素需要实现它.

通过将这些知识与Rust书中关于动态调度的段落联系起来,我构建了这样的东西:

use std::cmp;

fn sort(arr: &mut [&std::cmp::PartialOrd]) {
    // actual sorting
}
Run Code Online (Sandbox Code Playgroud)

这不编译:

error[E0393]: the type parameter `Rhs` must be explicitly specified
 --> src/lib.rs:3:21
  |
3 | fn sort(arr: &mut [&std::cmp::PartialOrd]) {
  |                     ^^^^^^^^^^^^^^^^^^^^ missing reference to `Rhs`
  |
  = note: because of the default `Self` reference, type parameters must be specified on object types
Run Code Online (Sandbox Code Playgroud)

是否有正确的语法来实现将实现特定特征的对象数组传递给函数?

arrays rust

4
推荐指数
1
解决办法
899
查看次数

标签 统计

rust ×2

arrays ×1

mutable ×1

reference ×1

syntax ×1

variables ×1