【Rust练习】1.变量绑定与解构

地址:https://practice-zh.course.rs/variables.html

🌟 变量只有在初始化后才能被使用

// 修复下面代码的错误并尽可能少的修改
fn main() {let x: i32; // 未初始化,但被使用let y: i32; // 未初始化,也未被使用println!("x is equal to {}", x); 
}

x初始化即可。

// 修复下面代码的错误并尽可能少的修改
fn main() {let x: i32 = 1; // 未初始化,但被使用let y: i32; // 未初始化,也未被使用println!("x is equal to {}", x); 
}

🌟🌟 可以使用 mut 将变量标记为可变

// 完形填空,让代码编译
fn main() {let __ = 1;__ += 2; println!("x = {}", x); 
}

声明mut x即可

// 完形填空,让代码编译
fn main() {let mut x = 1;x += 2; println!("x = {}", x); 
}

🌟 作用域是一个变量在程序中能够保持合法的范围

// 修复下面代码的错误并使用尽可能少的改变
fn main() {let x: i32 = 10;{let y: i32 = 5;println!("x 的值是 {}, y 的值是 {}", x, y);}println!("x 的值是 {}, y 的值是 {}", x, y); 
}

y的作用域仅限大括号内部(对C++程序员可太熟悉了),所以去掉即可。

// 修复下面代码的错误并使用尽可能少的改变
fn main() {let x: i32 = 10;{let y: i32 = 5;println!("x 的值是 {}, y 的值是 {}", x, y);}println!("x 的值是 {}", x); 
}

🌟🌟 若后面的变量声明的名称和之前的变量相同,则我们说:第一个变量被第二个同名变量遮蔽了( shadowing )

// 只允许修改 `assert_eq!` 来让 `println!` 工作(在终端输出 `42`)
fn main() {let x: i32 = 5;{let x = 12;assert_eq!(x, 5);}assert_eq!(x, 12);let x = 42;println!("{}", x); // 输出 "42".
}

本作用域内的值遮盖了外部的变量:

// 只允许修改 `assert_eq!` 来让 `println!` 工作(在终端输出 `42`)
fn main() {let x: i32 = 5;{let x = 12;assert_eq!(x, 12);}assert_eq!(x, 5);let x = 42;println!("{}", x); // 输出 "42".
}

🌟🌟 修改一行代码以通过编译

fn main() {let mut x: i32 = 1;x = 7;// 遮蔽且再次绑定let x = x; x += 3;let y = 4;// 遮蔽let y = "I can also be bound to text!"; 
}

再次声明的x和之前不是一个东西,所以要重新mut

fn main() {let mut x: i32 = 1;x = 7;// 遮蔽且再次绑定let mut x = x; x += 3;let y = 4;// 遮蔽let y = "I can also be bound to text!"; 
}

使用以下方法来修复编译器输出的 warning :

🌟 一种方法
🌟🌟 两种方法

fn main() {let x = 1; 
}

第一种就是改为_x,第二种就是随便使用下x(比如输出)

🌟🌟 我们可以将 let 跟一个模式一起使用来解构一个元组,最终将它解构为多个独立的变量

// 修复下面代码的错误并尽可能少的修改
fn main() {let (x, y) = (1, 2);x += 2;assert_eq!(x, 3);assert_eq!(y, 2);
}

在元组里再声明mut即可

// 修复下面代码的错误并尽可能少的修改
fn main() {let (mut x, y) = (1, 2);x += 2;assert_eq!(x, 3);assert_eq!(y, 2);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/42091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WIN32核心编程 - 线程操作(一) 线程信息 - 线程控制

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 Thread Thread Control 创建 - Create 执行 - Execute 挂起 - Suspend 恢复 - Resume 终止 - Terminate 远程 - Remote Thread Info GetCurrentThread/Id GetThreadContext CreateToo…

Vue iview-ui 被tooltip包裹的标题,点击跳转后,提示框不消失

tooltip包裹的标题,点击跳转后,提示框不消失 就会有这种显示问题 下面这种错误方法不可行,解决办法往下翻 css写得没错,问题出在Javascript当中的 getElementsByClassName(“xxabc”), 这个方法得到的是一个由class&q…

【Android】【WIFI】检查 SDIO 设备的状态

检查 SDIO 设备的状态 要检查 Android 设备上 SDIO 设备的状态,可以使用 ADB 命令来获取系统信息。以下是一些示例命令: 列出 SDIO 设备 adb shell cat /proc/devices | grep sdio检查 SDIO 模块是否加载 adb shell lsmod | grep sdio获取 SDIO 相关的…

IDEA中使用Maven打包及碰到的问题

1. 项目打包 IDEA中,maven打包的方式有两种,分别是 install 和 package ,他们的区别如下: install 方式 install 打包时做了两件事,① 将项目打包成 jar 或者 war,打包结果存放在项目的 target 目录下。…

自闭症在生活中的典型表现

自闭症,这个看似遥远却又悄然存在于我们周围的疾病,其影响深远且复杂。在日常生活中,自闭症患者的典型表现往往让人印象深刻,这些表现不仅揭示了他们内心的世界,也提醒我们要以更加包容和理解的心态去面对他们。 首先…

R语言4.3.0保姆级安装教程,包含安装包

[软件名称]:R语言4.3.0 R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。 获取链接: https://pan.quark.cn/s/180306f47179 安装步骤: 1.解压压缩包。 2.进入…

EtherCAT转Profinet网关配置说明第二讲:上位机软件配置

EtherCAT协议转Profinet协议网关模块(XD-ECPNS20),不仅可以实现数据之间的通信,还可以实现不同系统之间的数据共享。EtherCAT协议转Profinet协议网关模块(XD-ECPNS20)具有高速传输的特点,因此通…

iOS开发语言基础与Xcode工具初探

在iOS开发的世界里,Swift语言和Xcode开发工具是每个开发者旅程的起点。Swift,一种由Apple设计的编程语言,以其简洁的语法和强大的性能,成为了iOS开发的首选语言。而Xcode,则是Apple官方提供的集成开发环境(…

Spring的核心概念理解案列

IDEA开发的简单“登陆成功”小项目 IDEA项目结构: 每一部分代码和相应的解读: com.itTony文件下有dao(实体)层,service(服务)层,编写的2个类(HelloSpring和TestSpring&…

docker容器相关命令1(小记)

docker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start即可。 docker run -it … /bin/bash :表示创建并启动容器直接进入容器的命令行,命令行中exit就是退出容器&…

运维锅总详解CPU

本文从CPU简介、衡量CPU性能指标、单核及多核CPU工作流程、如何平衡 CPU 性能和防止CPU过载、为什么计算密集型任务要选择高频率CPU、超线程技术、CPU历史演进及摩尔定律等方面对CPU进行详细分析。希望对您有所帮助! 一、CPU简介 CPU(中央处理器&#…

要想贵人相助,首先自己得先成为贵人!

点击上方△腾阳 关注 转载请联系授权 在金庸江湖里,有两位大侠,一个是萧峰,一个是郭靖。 郭靖在《射雕英雄传》里是绝对的主角,在《神雕侠侣》当中也是重要的配角,甚至可以说是第二主角。 谈起郭靖,很多…

昇思MindSpore学习入门-评价指标

当训练任务结束,常常需要评价函数(Metrics)来评估模型的好坏。不同的训练任务往往需要不同的Metrics函数。例如,对于二分类问题,常用的评价指标有precision(准确率)、recall(召回率&…

20240706 每日AI必读资讯

🚀Meta 发布 AI 重磅炸弹:多标记预测模型现已开放研究 - 新技术采用多标记预测方法,有望提高性能并缩短训练时间。 - 模型同时预测多个未来单词,可能改善语言结构和上下文理解。 - multi-token prediction模型是Facebook基于大…

策略为王股票软件源代码-----如何修改为自己软件73------------主界面右下角,大盘指数,时间显示 ,

IDS_MAINFRAME_SHINDEXTIP "沪:%2.f %+.2f %.2f亿" IDS_MAINFRAME_SZINDEXTIP "深:%2.f %+.2f %.2f亿" 主界面右下角,大盘指数,时间显示 , if( TIMER_TIME == nIDEvent ) { CSPTime time = CSPTime::GetCurrentTime(); …

GET方法与POST方法的区别

GET方法与POST方法是HTTP协议中常用的两种请求方法,主要区别如下: GET方法 1. 数据传输位置:GET请求的数据通过URL传递,数据被附加在URL的末尾,以键值对的形式出现。 2. 数据长度限制:由于URL的长度限制&am…

AI网络爬虫001:用kimichat自动批量提取网页内容

文章目录 一、准备工作二、输入内容三、输出内容一、准备工作 在网页中按下F12键,查看定位网页元素 二、输入内容 在kimi中输入提示词: 你是一个Python编程专家,要完成一个爬取网页内容的Python脚本,具体步骤如下:在F盘新建一个Excel文件:提示词.xlsx打开网页:https:…

AI实践与学习7_AI解场景Agent应用预研demo

前言 学习大模型Agent相关知识,使用llama_index实现python版的Agent demo,根据AI解题场景知识密集型任务特点,需要实现一个偏RAG的Agent WorkFlow,辅助AI解题。 使用Java结合Langchain4j支持的RAG流程一些优化点以及自定义图结构…

Redis基础教程(九):redis有序集合

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

【踩坑】解决undetected-chromedriver报错cannot connect to-chrome

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 更新: 发现一个非常好用的项目,直接内置uc: GitHub - seleniumbase/SeleniumBase: 📊 Pythons all-in…