首页 > 其他分享 >Rust 笔记

Rust 笔记

时间:2023-07-04 15:44:28浏览次数:40  
标签:number C++ Rust 循环 笔记 println loop

https://github.com/ACMClassCourse-2022/Summer-Ray-Tracer

Rust 这门语言真的是挺难的,主要在于编译器贼事儿逼,什么都要管。这篇文章主要内容是给 C++ 的每一样东西一个 Rust 平替。

I/O

输出

print!(), println!()。其中的感叹号代表宏。用法:

let a = 3;
println!("a = {a}");
println!("a = {}", a);
println!("a = {b}", b = a);

用法跟 scanf 比较像,但是比 scanf 方便多了。转义同样用 \

输入

需要 use std::io。这句话的功能更偏向 include 而不是 using,因为你不 use 根本用不了。

io::stdin()
    .read_line(&mut guess)
    .expect("Failed to read line");

read_line 表示读一行。guess 一般要求是 mut String,后面可以利用屏蔽性,让一个同名数值变量屏蔽它。

expect 可以捕捉错误。read_line 是有返回值的,返回类型是一个内置类型,叫做 Result。它有两种可能值:Ok(_)Err(_)_ 表示通配符)。expect 会处理 Err 下的情况。如果返回 Err,程序会 panic,直接退出。

看一个用 match 结构(类似 switch-case)捕捉错误的例子(后面也会用到):

let guess: u32 = match guess.trim().parse() {
    Ok(num) => num,
    Err(_) => continue,
};

分支结构:

if

if 不止可以控制语句的执行,还可以表达一个有多种可能的表达式。

用法:

if number % 4 == 0 {
    println!("number is divisible by 4");
} else if number % 3 == 0 {
    println!("number is divisible by 3");
} else if number % 2 == 0 {
    println!("number is divisible by 2");
} else {
    println!("number is not divisible by 4, 3, or 2");
} // 没有小括号,其他跟 C++ 一样

let mut a = if b == 0 {1} else {0};

注意 if 里的 condition 一定要是一个 bool 类型。如果 a 是一个 i32,就不能直接 if a {...}。这一点跟 C/C++ 不一样。

match

用法见上。控制语句执行和表达式都可以。每个 case 的值跟控制的语句之间写 =>。每个 case 没有大括号的话后面跟逗号,有大括号可以加逗号可以不加。

if let

看不懂。到时候再说。

循环结构

loop

死循环。跳出去可以用 breakcontinue 也是类似 C++ 的。不一样的地方在于有一个东西叫做循环标签。C++ 想直接退出两层及以上循环必须在外面的循环开 flag 变量,但是 Rust 可以开循环标签,直接在里面退出外层循环。

'outer: loop {
    println!("Entered the outer loop");
    'inner: loop {
        println!("Entered the inner loop");
        // 这只是中断内部的循环
        //break;
        // 这会中断外层循环
        break 'outer;
    }
    println!("This point will never be reached");
}

while

条件不用加括号。

for

左闭右开:for n in 0..10;闭区间:for n in 1..=10

标签:number,C++,Rust,循环,笔记,println,loop
From: https://www.cnblogs.com/gznpp/p/17525922.html

相关文章

  • 1、笔记本刷ubuntu,安装饥荒服务器
    目录笔记本刷ubuntu,安装饥荒服务器一、准备二、笔记本刷机1、制作UbuntuserverU盘启动盘2、刷机3、设置电源不休眠三、安装饥荒服务器四、最后说下网络笔记本刷ubuntu,安装饥荒服务器一、准备1、一台老旧笔记本,用的我是10年前的联想g400s(i5-3230M处理器,8g内存(原来4g饥荒mod加......
  • ML Agents 学习笔记 (1)
    本文是对https://developer.unity.cn/projects/6232aab0edbc2a0019dcfe38的补充,非原创.0.环境搭建创建虚拟环境,环境内安装ml-agents包等.安装Unity,克隆ML-Agentsgithub仓库至本地.1.打开场景并运行用Unity打开Githubclone下来的项目;具体就是打开Unit......
  • [记]Rust闭包加动态分发
    pubtraitApp{fnrun(&mutself);}#[derive(Clone,Copy)]pubstructCda{d:i32,}implCda{fnnew(num:i32)->Self{Self{d:num}}fninc(&mutself)->Self{self.d+=1;*self}fnshow(......
  • Nginx学习笔记-部署静态页面实践
    目录准备一个静态登录页面demoHTML静态页面-index.htmlCSS样式文件-index.cssNginx配置文件-nginx.conf启动Nginx样例展示准备一个静态登录页面demo需要将下面的两个文件index.html和index.css放到nginx安装目录下html目录中HTML静态页面-index.html<!DOCTYPEhtml><htmll......
  • rust入门(一)
    1、安装Rust无论使用何种系统,均可以根据Rust官方网站提供的rustup-init工具完成Rust的安装.rustup-init下载地址:  https://www.rust-lang.org/zh-CN/tools/install根据系统提示进行安装,安装完成后,验证是否安装成功rustc--version提示:如果你使用的是Linux......
  • cesium学习笔记1
    node.js安装Node.js下载安装及环境配置教程【超详细】_nodejs下载_WHF__的博客-CSDN博客进入官网地址下载安装包 https://nodejs.org/zh-cn/download/选择对应你系统的Node.js版本,这里我选择的是Windows系统、64位cesium安装......
  • 单调栈单调队列学习笔记
    目录:单调栈1.1概念1.2实现1.3时间复杂度分析1.4应用单调队列1.1概念1.2实现1.3时间复杂度分析1.4应用习题1.单调栈1.1概念单调栈为满足单调性的栈结构,栈内元素满足单调性。1.2实现为满足单调性,在遍历到一个元素时,若此时加入后栈不满足单调性,则弹出栈......
  • 方芳:非物质文化遗产学习整理笔记(5-6)
    武汉市江夏路桥工程有限公司中央财经大学 经济管理学院    方   芳    15927602711 第五章 非物质文化遗产的利用利用的取向非物质文化遗产利用职向主要是指在现代社会文化语境中非物质文化遭产将何去何从的问题。具体是指非物质文化遗产的利用向......
  • ChatGLM-6B阿里云服务器部署及微调笔记
    1、ChatGLM-6B阿里云服务器部署整体参考零基础,零成本,部署一个属于你的大模型https://blog.csdn.net/qqxx6661/article/details/130311311?ops_request_misc=&request_id=&biz_id=102&utm_term=阿里云chatglm&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaid......
  • 公共语言运行库(CLR)开发系列课程(3):COM Interop基础 学习笔记
    公共语言运行库(CLR)开发系列课程(3):COMInterop基础学习笔记  上章地址什么是COMComponentObjectModel组建对象模型 基于接口(Interface)接口=协议IID标识接口V-table虚表方式调用单继承 对象(Object)实现一个或者多个接口举例:IDispatch......