cargo 使用国内源镜像,引用 substrate 的 Contracts Pallet Crate 编译错误

本文主要是介绍cargo 使用国内源镜像,引用 substrate 的 Contracts Pallet Crate 编译错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题

  1. cargo 编译很慢

  2. 学习 https://substrate.dev/docs/en/tutorials/add-contracts-pallet/ 时,编译报错

     ...pallet-contracts v3.0.0error[E0308]: mismatched types--> /home/dhbm/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/pallet-contracts-3.0.0/src/exec.rs:802:30|802 |         <T as Config>::Event::from(event).into(),|                                    ^^^^^ expected associated type, found enum `pallet::Event`|= note: expected associated type `<T as frame_system::Config>::Event`found enum `pallet::Event<T>`= help: consider constraining the associated type `<T as frame_system::Config>::Event` to `pallet::Event<T>` or calling a method that returns `<T as frame_system::Config>::Event`= note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.htmlerror: aborting due to previous error...
    

解决方案

当前使用的是 清华 源镜像,重新找了

https://cargo.budshome.com/reference/source-replacement.html

这里的脚本,挨个切换

$ cd ~/.cargo
$ cat config

[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"# 指定镜像
# replace-with = '镜像源名' # 如:tuna、sjtu、ustc,或者 rustcc
# replace-with = 'ustc'
# replace-with = 'tuna'
# replace-with = 'sjtu'
# replace-with = 'rustcc'# 以下列举了 4 个 可用源,可以自行选用其中一个,注释掉以上对应的 replace-with
# 20210427 这个 ustc 怎么不能用呢 
# 中国科学技术大学
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"
# >>> 或者 <<<
# registry = "git://mirrors.ustc.edu.cn/crates.io-index"# 上海交通大学
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index/"# 清华大学
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"# rustcc社区
[source.rustcc]
registry = "https://code.aliyun.com/rustcc/crates.io-index.git"

错误处理

  1. 以前遇到过的

       Downloaded block-padding v0.1.5 (registry `git://mirrors.ustc.edu.cn/crates.io-index`)Downloaded bs58 v0.3.1 (registry `git://mirrors.ustc.edu.cn/crates.io-index`)error: failed to download from `https://crates-io.proxy.ustclug.org/api/v1/crates/globset/0.4.5/download`
    
  2. 今天遇到的错误


    error[E0308]: mismatched types
    –> /home/dhbm/.cargo/registry/src/mirrors.sjtug.sjtu.edu.cn-4f7dbcce21e258a2/pallet-contracts-3.0.0/src/exec.rs:802:30
    |
    802 | ::Event::from(event).into(),
    | ^^^^^ expected associated type, found enum pallet::Event
    |
    = note: expected associated type <T as frame_system::Config>::Event
    found enum pallet::Event<T>
    = help: consider constraining the associated type <T as frame_system::Config>::Event to pallet::Event<T> or calling a method that returns <T as frame_system::Config>::Event
    = note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html

    error: aborting due to previous error

解决错误

  1. 分别切换了 tuna , sjtu , ustc ,都是一样的错误
    可能国内源还没有同步下来,只好改回原始的 source.crates-io (注释掉所有的 replace-with)

    漫长等待之后。还是这个错误啊!

    那么还是换回去 tuna 源镜像
    ** 切换源镜像无需重启

  2. 切换一下 rustc 缺省版本

    $ rustup default nightly-2021-04-15-x86_64-unknown-linux-gnu

     info: using existing install for 'nightly-2021-04-15-x86_64-unknown-linux-gnu'info: default toolchain set to 'nightly-2021-04-15-x86_64-unknown-linux-gnu'nightly-2021-04-15-x86_64-unknown-linux-gnu unchanged - rustc 1.53.0-nightly (16bf626a3 2021-04-14
    

    切换之前
    cargo --version

     cargo 1.48.0-nightly (75615f8e6 2020-09-29)
    

    现在
    $ cargo --version

     cargo 1.53.0-nightly (65d57e6f3 2021-04-04)
    
    1. 改回 tuna 源镜像,重新编译,终于 ok!

    $ cargo build --release

    Compiling node-template v3.0.0 (/home/dhbm/3.0.2/substrate-node-template/node)Building [=======================> ] 917/919: node-template 
    

这篇关于cargo 使用国内源镜像,引用 substrate 的 Contracts Pallet Crate 编译错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003300

相关文章

Nginx错误拦截转发 error_page的问题解决

《Nginx错误拦截转发error_page的问题解决》Nginx通过配置错误页面和请求处理机制,可以在请求失败时展示自定义错误页面,提升用户体验,下面就来介绍一下Nginx错误拦截转发error_... 目录1. 准备自定义错误页面2. 配置 Nginx 错误页面基础配置示例:3. 关键配置说明4. 生效

Mysql中RelayLog中继日志的使用

《Mysql中RelayLog中继日志的使用》MySQLRelayLog中继日志是主从复制架构中的核心组件,负责将从主库获取的Binlog事件暂存并应用到从库,本文就来详细的介绍一下RelayLog中... 目录一、什么是 Relay Log(中继日志)二、Relay Log 的工作流程三、Relay Lo

使用Redis实现会话管理的示例代码

《使用Redis实现会话管理的示例代码》文章介绍了如何使用Redis实现会话管理,包括会话的创建、读取、更新和删除操作,通过设置会话超时时间并重置,可以确保会话在用户持续活动期间不会过期,此外,展示了... 目录1. 会话管理的基本概念2. 使用Redis实现会话管理2.1 引入依赖2.2 会话管理基本操作

Springboot请求和响应相关注解及使用场景分析

《Springboot请求和响应相关注解及使用场景分析》本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam... 目录1. 请求处理注解@RequestMapping@GetMapping, @PostMappin

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

SpringBoot整合AOP及使用案例实战

《SpringBoot整合AOP及使用案例实战》本文详细介绍了SpringAOP中的切入点表达式,重点讲解了execution表达式的语法和用法,通过案例实战,展示了AOP的基本使用、结合自定义注解以... 目录一、 引入依赖二、切入点表达式详解三、案例实战1. AOP基本使用2. AOP结合自定义注解3.

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA

Python使用Matplotlib和Seaborn绘制常用图表的技巧

《Python使用Matplotlib和Seaborn绘制常用图表的技巧》Python作为数据科学领域的明星语言,拥有强大且丰富的可视化库,其中最著名的莫过于Matplotlib和Seaborn,本篇... 目录1. 引言:数据可视化的力量2. 前置知识与环境准备2.1. 必备知识2.2. 安装所需库2.3