我正在使用在依赖特征NonFungibleTokenCore上调用的函数,并且我想使用ext_contract的便利包装器来简化跨契约调用。
下面是我添加它的尝试:
#[ext_contract(ext_non_fungible_token)]
trait NFTCore: NonFungibleTokenCore {}我使用rust-analyzer的代码完成没有提供任何完成。当我构建它的时候,我得到了这个错误:
error[E0425]: cannot find function `nft_transfer` in module `ext_non_fungible_token`
--> sputnik-nft-staking/src/lib.rs:151:33
|
151 | ext_non_fungible_token::nft_transfer(sender_id.clone(), token_id.clone(), 0, None,
| ^^^^^^^^^^^^ not found in `ext_non_fungible_token`你有任何关于如何正确使用宏的想法吗?
发布于 2021-09-08 13:24:54
不幸的是,ext_contract proc宏只知道该块中的代码,不能基于NonFungibleTokenCore here https://github.com/roshkins/sputnik-dao-contract/blob/bc8398257cdbee248fdd6301af0dc41a9b7c5236/sputnik-nft-staking/src/lib.rs#L18的超级特征定义的方法生成代码。
现在,您必须重新定义接口,但我将询问是否有更干净的方法来完成此操作。
像这样的事情可能会解决你眼前的问题:
#[ext_contract(ext_non_fungible_token)]
trait NonFungibleTokenCore {
fn nft_transfer(
&mut self,
receiver_id: AccountId,
token_id: TokenId,
approval_id: Option<u64>,
memo: Option<String>,
);
fn nft_transfer_call(
&mut self,
receiver_id: AccountId,
token_id: TokenId,
approval_id: Option<u64>,
memo: Option<String>,
msg: String,
) -> PromiseOrValue<bool>;
fn nft_token(&self, token_id: TokenId) -> Option<Token>;
}https://stackoverflow.com/questions/69095938
复制相似问题