首页 > 其他分享 >rust学习二、入门之运行单个脚本

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

时间:2024-11-05 18:42:54浏览次数:3  
标签:脚本 cargo 依赖 入门 script let 单个 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是获取非常方便,使用也很方便的工具,但是过时了。应该使用run-script

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

 

标签:脚本,cargo,依赖,入门,script,let,单个,rust
From: https://www.cnblogs.com/lzfhope/p/18470528

相关文章

  • Java入门十二——static详解(含toString)
    上节课,我们只是微微提到了static,今天我们来具体讲讲static的用法static1.类名.静态成员变量(上篇博客Java入门十一有讲)为了方便大家查看,我把链接放在这里Java入门11——关键字总结+static-CSDN博客2.类名.静态成员方法这里,我们首先创建两个类,分别是java12和demo1,然后调用d......
  • 全网最详细大语言模型(LLM)入门学习路线图
    Github项目上有一个大语言模型学习路线笔记,它全面涵盖了大语言模型的所需的基础知识学习,LLM前沿算法和架构,以及如何将大语言模型进行工程化实践。这份资料是初学者或有一定基础的开发/算法人员入门活深入大型语言模型学习的优秀参考。这份资料重点介绍了我们应该掌握哪些核......
  • Go 语言变量类型:从入门到精通,一篇搞定所有知识点!
    Go语言变量类型1.基本类型1.1数值类型1.2布尔类型1.3字符串类型2.复合类型2.1数组2.2切片2.3字典(map)2.4结构体2.5接口3.类型转换4.零值5.示例1.基本类型Go语言中的基本类型主要包括数值类型、布尔类型和字符串类型。1.1数值类型整型:int:根据......
  • 挖漏洞怎么赚钱?挖漏洞入门到精通,收藏这篇就够了
    我就是一个最普通的网络安全工程师,出道快10年了,不出意外地遭遇到瓶颈期,但是凭技术在各大平台挖漏洞副业,硬是妥妥扛过来了。因为对于程序员来讲,这是个试错成本很低、事半功倍的选择。编程技能是一种强大生产力,决定程序员是一个高薪职业,同时由于技术迭代太快,决定程序员也是......
  • 九、Go语言快速入门之map
    文章目录Map:one:使用`Map`:star2:声明和初始化:star2:`map`容量:star2:用切片作为`map`的值:two:测试键值对是否存在及删除元素:three:`For`-`range`:four:`map`类型的切片:five:map的排序:six:将map的健和值对调......
  • 了解病毒木马(非常详细),零基础入门黑客,看这篇就够了!
    1、病毒木马是什么病毒木马都属于恶意软件,病毒会自我复制,木马则擅长伪装。2、病毒木马有哪些(1)破坏病毒:如熊猫烧香,以破坏计算机为目的,让计算机不能正常使用。(2)勒索病毒:本质是加密软件,被不法分子用于勒索。2017-2018年特别猖獗。(3)挖矿病毒:虚拟货币,通过计算资源获得。通......
  • 300个网络安全软件和在线工具(归类版)(非常详细),零基础入门到精通,看这一篇就够了
    系统下载1、KALI安装版https://pan.quark.cn/s/483c664db4fb2、KALI免安装版https://pan.quark.cn/s/23d4540a800b3、下载所有Kali系统https://pan.quark.cn/s/7d8b9982012f4、KALI软件源https://pan.quark.cn/s/33781a6f346d5、所有Linux系统https://pan.quark.c......
  • 中国十大网络安全公司(非常详细),零基础入门到精通,看这一篇就够了
    文章目录前言1、深信服科技股份有限公司2、奇安信3、启明星辰信息技术集团股份有限公司4、天融信(南洋股份)5、美亚柏科6、蓝盾股份7、绿盟科技8、任子行9、安恒信息10、山石网科零基础网络安全学习计划学习路线图大纲总览学习计划阶段一:初级网络安全工程师阶段二:中级or高......
  • 【新人系列】Python 入门(七):基础内容 - 下
    ✍个人博客:https://blog.csdn.net/Newin2020?type=blog......
  • Neo4j入门:详解Cypher查询语言中的MATCH语句
    Neo4j入门:详解Cypher查询语言中的MATCH语句引言什么是MATCH语句?示例数据1.基础节点查询查询所有节点按标签查询节点2.关系查询基础关系查询指定关系方向指定关系类型3.使用WHERE子句4.使用参数5.多重MATCH和WITH子句实用技巧总结引言大家好!今天我们来学习Neo......