rust学习二、入门之运行单个脚本

入门者,在搭建好环境好之后,接下来得先熟悉工具。有了趁手的工具,学起来才会快得多!

作为入门者,非常希望能够单独运行一个rust脚本,而没有必要一个练习就建立一个项目。

在https://crates.io上,我们可以找到各种各样的工具,有两个可以关注:

  • cargo-script  ,很不幸的是,这个项目自从2017年之后就么有更新了,所以掌握主要的方法即可。
  • rust-script,最近还有更新.推荐用这个。

 

有了这些工具,即使没有ide环境,也可以非常容易学习基本的rust代码!

为了节约篇幅,以下称为script或者脚本命令。

script的安装非常容易:

  • cargo install cargo-script  
  • cargo install rust-script

 

cargo-script的官网地址:GitHub - DanielKeep/cargo-script: Cargo script subcommand

run-scipt 官网地址:https://github.com/fornwall/rust-script  ,https://rust-script.org/

 

注意有个和cargo-script很类似的东西是script,不要搞错。

一、cargo-script的作用

通过命令行大概可以知道script有什么作用

cargo help script

注意:如果没有安装cargo-script,那么是不会出现这个命令选项的。

 

各个选项/标记都很有用。重点介绍下选项部分

-d  添加一个外部依赖

-D 添加一个宏依赖

-x  添加一个宏

-t  使用模板

-l 从标准输入获取脚本,并每行执行一次

- 把脚本当做字面表达式执行

 

二、cargo-script示例

2.1单独运行一个rs且不附加依赖

 

这是最常见的语法,非常适合在无需额外依赖的情况,非常适用于初学者用来练习rust的基本知识。

此外上面的命令等价于下面这个:

cargo-script script 2.2mut_immt.rs

鉴于这个要输入更多字符,不如用cargo script xxx 更省事一些。

 

2.2 添加/注入一个依赖

创建一个脚本 ,部分如下:

/**
 * cargo  script -d rand 2.1guessGame.rs
 */
extern crate rand;
use std::io;
use rand::{thread_rng, Rng};
use std::cmp::Ordering;
fn main(){
	println!("猜猜数字");
	let secret_str =rand::thread_rng().gen_range(1..101);
	//let s: String = secretStr.to_string();
	println!("输入猜测的次数");
	let mut gts=String::new();
	io::stdin().read_line(&mut gts).expect("读取失败");
	let gts: u32=gts.trim().parse().expect("请输入一个数字");

 

注意,没有其它什么配置。现在就希望在它所在目录执行(如果执行 cargo  run)

则可以如下:

 

-d 可以添加一个依赖

-x 注入一个外部的crate(程序包)

三、rust-script

安装  cargo install rust-script

 

3.1 查看帮助

还有许多,不浪费篇幅了。

某种程度上和cargo-script还有不少相似之处,二者应该有某种关联的。

 

3.2 运行一个脚本-不带外部依赖

rust-script   3.2_compoundtype复合.rs

如果不带依赖,速度还行。

 

3.3 运行一个脚本-带外部依赖

和cargo-script很像

rust-script  -d rand 2.1guessGame.rs

第一次可能很慢,你会怀疑是不是卡死了,后来一看官方说明,了解了:

Under the hood, a Cargo project will be generated and built (with the Cargo output hidden unless compilation fails or the -c/--cargo-output option is used). 
The first invocation of the script will be slower as the script is compiled
- subsequent invocations of unmodified scripts will be fast as the built executable is cached.

3.4直接执行一个表达式

虽然用的少,偶尔还是会用用,语法:

rust-script -e "xxxx"   

-e 选项可以结合其它选项一起使用,例如 -d,可以注入模块

 

例-执行单句且注入外部的模块

rust-script -d time -e  "time::util::is_leap_year(2024)"

输出true

例-执行多条语句

rust-script -e "{let a=10; let b=20;a+b}"

输出 30;

为了避免乱七八杂的麻烦,可以使用{}

 

四、小结

cargo-script是获取非常方便,使用也很方便的工具,但是过时了。应该使用rust-script

如果不需要单步调试,run-script已经是一个不错的工具

 

posted @ 2024-11-05 18:46  正在战斗中  阅读(23)  评论(0编辑  收藏  举报