gpt4 book ai didi

rust - 指定泛型类型来实现 Clone 但类型没有 Clone 方法

转载 作者:行者123 更新时间:2023-11-29 08:27:26 29 4
gpt4 key购买 nike

我有这样的代码,我需要在其中将某些内容插入到两个单独的 HashMap 中。我只想要实现克隆的通用类型。

use std::collections::HashMap;
use std::clone::Clone;

pub struct Something<A, B> {
hm1: HashMap<usize, B>,
hm2: HashMap<usize, B>,
other: A,
}

impl<A, B> Something<A, B>
where B: Clone
{
fn add_to_both_hm(&mut self, x: usize, y: usize, weight: B) {
self.hm1.insert(x, weight.Clone());
self.hm2.insert(y, weight);
}
}

但是在编译时,编译器会报错 error: no method named 'Clone' found for type 'B' in the current scope

为什么我指定了 where B: Clone 还是报错?我该如何解决?

The rust playground is here .

最佳答案

两个可能的答案:

  1. 该方法被称为clone,带有小写的c。 Rust 是一种区分大小写的语言。

  2. Clone 不是一种方法,而是一种特征。特征的名称与它可能定义的任何方法的名称没有任何关系。在 Clone 的例子中,它定义了一个方法 clone 来实现类型。

这两种情况的解决方案都很简单:改为编写 weight.clone()

关于rust - 指定泛型类型来实现 Clone 但类型没有 Clone 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206326/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com