Rust学习记录 -> 关于Crates.io的问题
文章目录
- 前言
- 问题描述与解析
- 1.版本更迭带来的依赖包适配问题
- 2. openssl
- 总结
前言
最近我在使用rust语言编写一个商场后端demo时,由于需要与mysql进行交互以及序列化等操作,所以通过crates.io下载了许多外部依赖包,在这个过程中我遇到了由版本更迭,镜像网站之间版本不一所带来的问题,具体如下文所述
问题描述与解析
1.版本更迭带来的依赖包适配问题
部分报错代码如下:
error[E0308]: mismatched types--> /home/hadoop/.cargo/registry/src/github.com-1ecc6299db9ec823/lexical-core-0.4.6/src/atof/algorithm/bigcomp.rs:243:55|
243 | let nlz = den.leading_zeros().wrapping_sub(wlz) & (u32::BITS - 1);| ^^^^^^^^^^^^^^^ expected `usize`, found `u32`error[E0277]: no implementation for `usize & u32`--> /home/hadoop/.cargo/registry/src/github.com-1ecc6299db9ec823/lexical-core-0.4.6/src/atof/algorithm/bigcomp.rs:243:53|
243 | let nlz = den.leading_zeros().wrapping_sub(wlz) & (u32::BITS - 1);| ^ no implementation for `usize & u32`|= help: the trait `BitAnd<u32>` is not implemented for `usize`error[E0308]: mismatched types--> /home/hadoop/.cargo/registry/src/github.com-1ecc6299db9ec823/lexical-core-0.4.6/src/atof/algorithm/bigcomp.rs:261:40|
261 | let (q, r) = shift.ceil_divmod(Limb::BITS);| ^^^^^^^^^^ expected `usize`, found `u32`|
可以发现报错的外部包是 lexical_core-0.4.6 ,起初我对包中的代码进行修改,发现并无效果,于是开始查询Crates.io官方文档。在查询了 lexical-core包的具体文档以及版本更新情况后,我得知该外部包最新版本已经更新到了0.8.2版本,从镜像网站下载的包已经严重滞后。
以上是出现问题的一个原因,其次,笔者在查询Crates.io官方文档前,还对代码进行了修改,例如将 u32:BITS - 1 修改为 usize:BITS - 1 ,但是报错并未发生变化,所以我还对cargo版本进行查询,对笔者版本(1.55.0)的官方文档进行阅读,对BITS有如下发现:
pub const BITS: u32The size of this integer type in bits.
Examplesassert_eq!(u32::BITS, 32);
pub const BITS: u32The size of this integer type in bits.
Examplesassert_eq!(usize::BITS, 64);
所以修改代码后才会无效。
2. openssl
在更换Crates.io镜像源地址后再次运行代码,出现了:Could not find directory of OpenSSL installation 的报错,而我的ubuntu20.04已经安装了openssl最新版本,最后在这里发现了问题的解决方案:
Mac OSX / Homebrew
If you have Homebrew installed:
$ brew install openssl@1.1Debian / Ubuntu
Using the apt package manager:
$ apt install pkg-config libssl-devFedora / RHEL / CentOS
And using yum:
$ pkg-config openssl-develOr with the newer dnf package manager:
$ dnf install pkg-config openssl-devel
转自https://ma.ttias.be/could-not-find-directory-of-openssl-installation/
至此,暂时遇到的问题就全部解决。
总结
首先,由于Rust语言相较于python等语言并不是那么主流,所以在一般的网站及博客中难以找到报错的解决方案,这让我不得不开始阅读官方提供的文档注释,既是一种挑战也是一种成长,习惯后还有些依赖于官方文档。
其次,由于我在安装rust编译环境时使用了上交大源,而在更新Crates.io镜像源时只是简单的更换了中科大源,并未考虑不同镜像源之间的适配问题,比如在更换镜像源过程中,笔者发现对于上文提到的 lexical-core 外部包,不同镜像源网站所提供的版本就是不一致的,所以才导致了生产过程中严重的报错。
最后,经过此次经历,笔者多有成长,也对一些方法的使用更加熟练。至此感谢您的阅读,如有疑问或是指正,还请你不吝赐教。
Rust学习记录 -> 关于Crates.io的问题相关推荐
- Rust dependencies依赖管理crates.io原理梳理
1. 背景知识 本文针对的是Cargo 1.37版本. Rust项目的依赖主要在Cargo.toml文件[dependencies]段落中定义,常见的依赖方式有: 基于rust官方仓库crates.i ...
- Rust语言——cargo、crates.io
release profile: 是预定义的 可自定义:可使用不同的配置,对代码编译拥有更多的控制 每个profile的配置都独立于其他的profile cargo主要的两个profile: -dev ...
- Rust学习记录 -> 线程之间的通道通信
文章目录 前言 一.管道是什么? 二.使用步骤 1.通道类型 2.通道的定义与使用 3.通道中的所有权问题 4.多信息多线程模拟 总结 前言 在结束线程的学习过后,笔者继续学习了关于多线程通信的工具, ...
- rust军用船指令_Rust基础学习笔记(五):Cargo与Crates.io
最近复习鸽了几天,今天继续学,希望在考试之前搞定这个官方文档 もうダメ.... 本章学习Cargo和Crates.io相关,内容有下: 自定义构建 向crates.io提交libraries 利用工作 ...
- Rust学习—解决crates.io 仓库代码下载慢的问题
今天是学习Rust的第二天,在尝试调用依赖(dependencies)的时候发现非!常!慢!需要采用一些方法来解决. Rust学习-解决crates.io 仓库代码下载慢的问题 今天在下载randra ...
- 初学rust——Iterators、Closures、Crates.io and Pointers
学习rust的第五.六天,学习资料是官网的<The Rust Programming Language>,本笔记的内容包括第13-15章的内容 Chapter 13 Functional ...
- Rust crates.io换国内镜像源
由于众所周知的原因,crates.io在国内访问十分糟糕,轻则编译缓慢,要很久很久,重则直接超时报错,编译不了. 下面就为rust crates.io换上国内中科大的源 1. 进入当前用户的 .car ...
- Rust:Cargo check 时 Updating crates.io index 发生错误
Rust:Cargo check 时 Updating crates.io index 发生错误 问题 解决: 问题 Updating crates.io index warning: spuriou ...
- Rust编译加速crates.io
编译Rust项目时需要访问crates.io, 由于网络环境原因通常比较慢,可以使用国内的crates.io地址: 编辑或新建~/.cargo/config文件,添加以下内容: [source.cra ...
最新文章
- windows和linux文件的转换
- Windows安全策略
- Bitmap基本概念及在Android4.4系统上使用BitmapFactory的注意事项
- Waymo无人车高层动荡:CFO今日也走了,半年已失8名高管
- Journey to Un‘Goro 贪心,找规律,搜索(沈阳)
- java poi导入50万数据_java从oracle读取50万条数据写入Excel中抛GC overhead limit exc
- Fabricjs在Canvas上使用路径Path绘制不规则图形
- 解读区块链,软分叉和硬分叉
- 新后缀勒索病毒.phobos 解密成功 sql数据恢复
- 诺依曼体系结构、哈佛体系结构与改进型哈佛结构之间的区别
- .NET Core开源组件:后台任务利器之Hangfire
- ltv价值 应用_用户终生价值Ltv是什么,在游戏设计中如何考虑?
- word List 10
- nginx subrequest演示示例程序
- fineuploader php服务端
- mysql 词频分析工具_hive进行词频统计
- 是什么门的缩写_开车:和她结婚需要注意什么
- 平行哲学与智能技术:平行产业与智慧社会的对偶方程与测试基础
- 栈——栈的基本概念和基本操作
- 会议OA项目(项目原型图介绍发布会议功能)
热门文章
- 博客平台:评论发布与删除、评论回复、评论点赞、举报、关注、收藏模块
- QCC3040---htf文件修改
- 北大肖臻老师《区块链技术与应用》系列课程学习笔记[7]比特币-分叉
- 个人计算机基本配置,DIY个人计算机配置的小建议
- Mr.D_速学“凯利公式”
- 如何在 Python 中删除文件或文件夹?
- Arduino温度传感器之继电器控制风扇
- 安川机器人程序还原_安川机器人报错代码:功能概要和程序数据简易修复方法...
- 关于自动白平衡的算法问题
- python记忆口诀-学妹问我:如何提高编程能力