gpt4 book ai didi

rust - 提款或存款后是否必须处理 `Imbalance` 类型?

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

当使用任何类型转换/销毁基础货币的函数时(例如 Currency::withdraw()),您将获得一个 Imbalance 返回值。 Substrate 希望我用它做点什么吗?

最佳答案

每当您执行一些 "one-sided operation" within the Balances module 时,您都会返回一个不平衡 (存款斜杠取款,等等)。

PositiveImbalanceNegativeImbalance 都实现了 Drop trait,它定义了一个析构函数,当变量超出范围时调用该函数。

不平衡的情况下,drop函数简单地更新余额模块的总发行量,以确保所有当前账户余额的总和等于发行总量。

所以默认情况下,不,你不需要对返回给你的不平衡做任何事情。你可以像这样将“单边操作”的结果放入一个未使用的变量中:

let _ = <balances::Module<T> as Currency<_>>::withdraw(...)?;

但是,如果您愿意,我们还提供了一套工具来管理返回给您的不平衡:

impl<T: Trait<I>, I: Instance> Imbalance<T::Balance> for NegativeImbalance<T, I> {
type Opposite = PositiveImbalance<T, I>;

fn zero() -> Self {...}

fn drop_zero(self) -> result::Result<(), Self> {...}

fn split(self, amount: T::Balance) -> (Self, Self) {...}

fn merge(mut self, other: Self) -> Self {...}

fn subsume(&mut self, other: Self) {...}

fn offset(self, other: Self::Opposite) -> result::Result<Self, Self::Opposite> {...}

fn peek(&self) -> T::Balance {...}
}

关于rust - 提款或存款后是否必须处理 `Imbalance` 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56341343/

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