rustlings v6.0 运行时出现 “ You are trying to run Rustlings using the old method before version 6”
背景
在之前学习 rust 时,使用过一段时间 rustlings 感觉还不错,但是之前的学习只把 rustlings 的题目刷了一半,然后想再从头到尾刷一遍 rustlings 的题目。
在 rustlings 的 README.md 文档中也没有找到重置 rustlings 的方法,而且官方的分支也更新到了 v6.2.0(我之前使用的似乎是 v5.x 版本的)。索性直接把整个文件夹删掉,再重新搞一遍,顺便也可以试试 v6.2.0 有啥不一样,一石二鸟。
然后,按之前的记忆安装 rustlings(就是没细看现在的 README.md 文档,因为之前的安装记忆犹新...)。然后就是一半是按记忆里的,一半是那个 README.md 文档里的,具体就是:
$: git clone https://github.com/rust-lang/rustlings.git
$: cd rustlings/
$: cargo install rustlings
$: rustlings init
然后,就报错了...
$:~/rust/rustlings$ rustlings
Error: You are trying to run Rustlings using the old method before version 6.
The new method doesn't include cloning the Rustlings' repository.
Please follow the instructions in `README.md`:
https://github.com/rust-lang/rustlings#getting-started
分析
按终端的提示信息应该是一个旧版本的 rustlings 和一个 version 6 版本的 rustlings 有冲突,初步感觉是之前的 rustlings 没卸载干净。
那好,就再按规范再卸载一次 cargo uninstall rustlings
,保险起见还在目录里敲了个 cargo clean
。
然后,我再
$: git clone https://github.com/rust-lang/rustlings.git
$: cd rustlings/
$: cargo install rustlings
$: rustlings init
然后,就又报错了...
$:~/rust/rustlings$ rustlings
Error: You are trying to run Rustlings using the old method before version 6.
The new method doesn't include cloning the Rustlings' repository.
Please follow the instructions in `README.md`:
https://github.com/rust-lang/rustlings#getting-started
进一步分析
明显感觉到不对劲,然后我直接在 vscode 里把源码的文件夹打开,看看这个 error 是什么条件产生的,在 rustlings/src/main.rs
里
const OLD_METHOD_ERR: &str =
"You are trying to run Rustlings using the old method before version 6.
The new method doesn't include cloning the Rustlings' repository.
Please follow the instructions in `README.md`:
https://github.com/rust-lang/rustlings#getting-started";
就是这段话,一模一样,然后查找 OLD_METHOD_ERR
在哪里有调用,还是在这个文件里
if cfg!(not(debug_assertions)) && Path::new("dev/rustlings-repo.txt").exists() {
bail!("{OLD_METHOD_ERR}");
}
第一个条件检查代码是否在发布模式下运行,如果代码在发布模式下编译(即没有调试断言)cfg!(not(debug_assertions))
返回 true
,这个条件没问题,我就是在发布模式下运行的。
那么问题就在第二个条件里了,第二个条件检查 dev/rustlings-repo.txt
是否存在。去到那个目录下,果然存在这个文件,文件内容是
This file is used to check if the user tries to run Rustlings in the repository (the method before version 6)
好家伙,看了这段话才恍然大悟,version 6
和 version 5
rustlings 的安装使用方法变更了,然后又重新看了 README.md 文档。
果然,人家现在不需要再像之前 version 5
的时候,必须先把 rustlings 的库 clone 到本地,然后再安装初始化使用。只需要直接在终端敲 cargo install rustlings
然后正常的初始化就可以使用了,省了之前的 库 clone 到本地 那一步。
解决方法
$: cargo install rustlings
$: cd rustlings/
$: rustlings init
总结
这 rustlings 版本更新后,也不在 README.md 文档明说一下version 6
和 version 5
rustlings 的安装使用方法变更了,坑坑坑。
好吧,好像根本原因在我没细看人家的文档...
rustlings v6.0 运行时出现 “ You are trying to run Rustlings using the old method before version 6”的更多相关文章
- Android权限管理之Android 6.0运行时权限及解决办法
前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现在Android 6.0以 ...
- Android6.0运行时权限(基于RxPermission开源库)
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 在6.0以前的系统,都是权限一刀切的处理方式,只要用户安装,Manifest申请的权限都会被赋予,并且安装后权限也撤销不了. And ...
- Android8.0运行时权限策略变化和适配方案
版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.comAndroid8.0也就是Android O即将要发布了,有很多新特性,目前我们可以通过AndroidS ...
- iOS学习之Objective-C 2.0 运行时系统编程
0 导言 本主主要内容包括: 1.概述2.参考3.运行时系统的版本和平台4.和运行时系统的交互5.消息6.动态方法解析7.消息转发8.类型编码9.属性声明 1 概述 Objective-C语言将决定尽 ...
- Android 6.0+ 运行时权限
1.权限被分为了普通和危险两种 2.打电话的Demo import android.Manifest; import android.app.Activity; import android.cont ...
- Android数据存储之Android 6.0运行时权限下文件存储的思考
前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...
- Android 6.0 运行时权限处理完全解析
一.概述 随着Android 6.0发布以及普及,我们开发者所要应对的主要就是新版本SDK带来的一些变化,首先关注的就是权限机制的变化.对于6.0的几个主要的变化,查看查看官网的这篇文章http:// ...
- Android开发学习之路-Android6.0运行时权限
在Android6.0以后开始,对于部分敏感的“危险”权限,需要在应用运行时向用户申请,只有用户允许的情况下这个权限才会被授予给应用.这对于用户来说,无疑是一个提升安全性的做法.那么对于开发者,应该怎 ...
- 谈谈Android 6.0运行时权限理解
前言 谷歌在2015年8月份时候,发布了Android 6.0版本,代号叫做“棉花糖”(Marshmallow ),其中的很大的一部分变化,是在用户权限授权上,或许是感觉之前默认授权的不合理,现在6. ...
- Android 6.0 运行时权限处理
在运行时请求权限 从Android 6.0(API级别23)开始,用户权限授予应用程序在应用程序运行时,当他们安装程序.这种方法简化了应用程序的安装过程,因为用户不需要安装或更新应用程序时授予权限.这 ...
随机推荐
- Linux 安装 TeX Live
安装新版本 cd /tmp # 下载安装压缩包 wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz # 解 ...
- 在虚拟机CentOS中安装docker
公众号本文地址:在虚拟机CentOS中安装Docker 1.关闭防火墙 docker需要用到网络,所以需要关闭防火墙.进入管理员模式获得权限后进行关闭. su 关闭防火墙: systemctl dis ...
- 像 Mysql 和 MongoDB 这种大型软件在设计上都是精益求精的,它们为什么选择B树,B+树这些数据结构?
为什么 MongoDB (索引)使用B-树而 Mysql 使用 B+树? B 树与 B+ 树,其比较大的特点是:B 树对于特定记录的查询,其时间复杂度更低.而 B+ 树对于范围查询则更加方便,另外 B ...
- rabbitmq高可用集群搭建
需求分析基本情况 在进行RabbitMQ搭建时,我们基于现有的连接数据和业务需求进行了深入分析.目前的统计数据显示,连接数为631,队列数为80418.为了确保业务需求的顺利满足,我们需要在云产品和自 ...
- CSS – RWD (Responsive Web Design) 概念篇
介绍 Only PC 以前是没有手机的, 只有电脑, 所以做开发, 只需要开发电脑版本就可以了. Mobile Version 后来手机诞生, 有钱的公司就做两个版本, 一个手机版, 一个电脑版. 没 ...
- Fluent Builder 模式
前言 以前最讨厌设计复杂方法调用, 就是那种需要一堆有逻辑规则的 config 作为参数的方法. 这种 config 通常是一个大对象, 有许多 property, property 之间有存在一些逻 ...
- 3.1 migration to 5.0
记入我遇到的问题 : 1. localizer.WithCulture 废弃了 https://github.com/dotnet/aspnetcore/issues/7756 其实讨论很久了, 只是 ...
- IDEA如何查看每一行代码的提交记录(人员,时间)
前言 我们在使用IDEA开发时,一般需要使用git来管理我们的代码,而且大家协同开发. 有时候,我们在开发的时候,经常需要看一下当前的代码时谁开发的,除了看类上面的作者外,更精细的方式是看每一行代 ...
- YAML 文件基本语法格式(十四)
一.YAML 文件基本语法格式 前面我们得 Kubernetes 集群已经搭建成功了,现在我们就可以在集群里面来跑我们的应用了.要在集群里面运行我们自己的应用,首先我们需要知道几个概念. 第一个当然就 ...
- 【首场重磅亮相】KaiwuDB 1.0 时序数据库线上发布会明日开启!邀您共同见证
首场重磅亮相 KaiwuDB 是浪潮集团控股的数据库企业,以多模数据库为核心,面向工业物联网.数字能源.交通车联网.智慧城市.数字政务等多种场景,提供领先创新的数据服务软件. 新生代数据库,扬帆起航正 ...