相关疑难解决方法(0)

从自定义结构的向量中删除重复项

我正在尝试删除以下示例中的重复项:

struct User {
    reference: String,
    email: String,
}

fn main() {
    let mut users: Vec<User> = Vec::new();
    users.push(User {
        reference: "abc".into(),
        email: "test@test.com".into(),
    });
    users.push(User {
        reference: "def".into(),
        email: "test@test.com".into(),
    });
    users.push(User {
        reference: "ghi".into(),
        email: "test1@test.com".into(),
    });

    users.sort_by(|a, b| a.email.cmp(&b.email));
    users.dedup();
}
Run Code Online (Sandbox Code Playgroud)

我收到了(预期)错误

error[E0599]: no method named `dedup` found for type `std::vec::Vec<User>` in the current scope
  --> src/main.rs:23:11
   |
23 |     users.dedup();
   |           ^^^^^
   |
Run Code Online (Sandbox Code Playgroud)

如何从删除重复users的email值?我可以实现dedup()功能struct User还是我必须做其他事情?

rust

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

如何为泛型类型 Vec&lt;T&gt; 的向量实现特征?

如何为泛型类型的向量实现以下特征Vec<T>?

例如,如何以Difference通用方式实现以下(工作)特征(例如,使其对Vec<i32>, Vec<f32>,有效Vec<f64>)?

trait Difference {
    fn diff(&self) -> Vec<f64>;
}

impl Difference for Vec<f64> {
    fn diff(&self) -> Vec<f64> {
        self.windows(2)
            .map(|slice| (slice[0] - slice[1]))
            .collect()
    }
}

fn main() {
    let vector = vec![1.025_f64, 1.028, 1.03, 1.05, 1.051];
    println!("{:?}", vector.diff());
}
Run Code Online (Sandbox Code Playgroud)

从查看文档来看,它似乎应该是这样的:

trait Difference<Vec<T>> {
    fn diff(&self) -> Vec<T>;
}

impl Difference for Vec<T> {
    fn diff(&self) -> Vec<T> {
        self.windows(2)
            .map(|slice| (slice[0] - slice[1]))
            .collect()
    } …
Run Code Online (Sandbox Code Playgroud)

generics syntax traits rust

2
推荐指数
1
解决办法
2829
查看次数

Vec :: dedup不起作用 - 如何重复删除字符串向量?

我已经解析了一个文件,按行分割字符串,并希望在每个向量中只留下唯一的元素.我期望vec.dedup()这样工作:

let mut vec = vec!["a", "b", "a"];
vec.dedup();
assert_eq!(vec, ["a", "b"]);
Run Code Online (Sandbox Code Playgroud)

但它失败了:

thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `["a", "b", "a"]`,
 right: `["a", "b"]`', src/main.rs:4:4
Run Code Online (Sandbox Code Playgroud)

如何删除重复项?

string vector rust

0
推荐指数
2
解决办法
1487
查看次数

标签 统计

rust ×3

generics ×1

string ×1

syntax ×1

traits ×1

vector ×1