/home/niko/-6ren">
gpt4 book ai didi

rust - 从对特征关联类型的引用中读取值时,如何解决 "borrowed content"错误?

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

我有一个指向 u64 值的指针,但我无法读取它。我收到此错误:

error[E0507]: cannot move out of borrowed content
--> /home/niko/sub/substrate/srml/system/src/lib.rs:533:32
|
533 | let mut aid: T::AccountId = *copy_who;
| ^^^^^^^^^
| |
| cannot move out of borrowed content
| help: consider removing the `*`: `copy_who`

如何避免“借用内容”错误?如果您无法读取它指向的任何内容,那么拥有指向变量的指针有什么意义?

impl<T: Trait> Module<T> {
// getter for AccountId
pub fn get_account_id(who: &T::AccountId) -> T::AccountId {
let mut copy_who: &T::AccountId = who;
{
let mut aid: T::AccountId = *copy_who;
return aid;
}
}
}

AccountId 定义如下:

type AccountId = u64;

最佳答案

你的问题可以简化为

trait Example {
type AccountId;
}

fn get_account_id<T>(who: &T::AccountId)
where
T: Example,
{
*who;
}
error[E0507]: cannot move out of borrowed content
--> src/lib.rs:8:5
|
8 | *who;
| ^^^^ cannot move out of borrowed content

为了编译此代码,T::AccountId 必须实现Copy:

fn get_account_id<T>(who: &T::AccountId)
where
T: Example,
T::AccountId: Copy,
{
*who;
}

但这不是最灵活的解决方案。

关于rust - 从对特征关联类型的引用中读取值时,如何解决 "borrowed content"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56153943/

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