当前位置: 首页 > news >正文

2024 Rust现代实用教程:变量与常见数据类型

文章目录

  • 一、Rust中的变量基础知识
    • 1.Rust中的变量是默认不可变的
    • 2.使用mut关键字进行可变声明
    • 3.Shadowing Var iables并不是重新赋值
    • 4.Example
  • 二、常量const与静态变量static
    • 1.const常量
  • 参考

一、Rust中的变量基础知识

1.在Rust中,使用Iet关键字来声明变量

2.Rust支持类型推导,但你也可以显式指定变量的类型:

let x:i32=5;/显式指定x的类型为i32

3.变量名蛇形命名法(Snake Case),而枚举和结构体命名使用帕斯卡命名法(Pasca|Case)

  • 蛇形命名法即:两个单词之间加下划线
  • 帕斯卡命名法即:首字母大写
  • 如果变量没有用到可以前置下划线,消除警告(但是不会报错)

4.强制类型转换Casting a Value to a Different Type

let a 3.1;
let b=a as i32;

5.打印变量({}与{:?}需要实现特质之后章节会介绍,基础类型默认实现)

1.printIn!("val:{}"x);老方法
2.printIn!("val:{x}");新方法

1.Rust中的变量是默认不可变的

不可变性是Rust实现其可靠性和安全性目标的关键

它迫使程序员更深入地思考程序状态的变化,并明确哪些部分的程序状态可能会发生变化的

不可变性有助于防止一类常见的错误,如数据竞争和并发问题

2.使用mut关键字进行可变声明

如果你希望一个变量是可变的,你需要使用ut关键字进行明确声明

let mut y=10;/可变变量
y=20;//合法的修改

3.Shadowing Var iables并不是重新赋值

Rust允许您隐藏一个变量,这意味着您可以声明一个与现有变量同名的新变量,

  • 从而有效地隐藏前一个变量
  • 可以改变值
  • 可以改变类型
  • 可以改变可变性

4.Example

 cargo new project
fn main() {println!("Hello, world!");// 不可变与命名let _nice_count = 100;let _nice_number: i16 = 100;// nice_number=1//shadowinglet x = 5;{// 命名空间let x = 10;println!("inner x: {}", x);} //内部的x被销毁println!("outer x: {x}");// 在同一个作用域下重新声明了下,最终覆盖了之前的xlet x = "hello";println!("New x: {x}");// 可以重定义类型 可变性let mut x = "this";println!("mut x: {x}");x = "that";println!("mut x: {x}");
}

编译以及运行

 cargo runCompiling project v0.1.0 (/home/wangji/installer/rust/project)Finished dev [unoptimized + debuginfo] target(s) in 0.27sRunning `target/debug/project`
Hello, world!
inner x: 10
outer x: 5
New x: hello
mut x: this
mut x: that

二、常量const与静态变量static

1.const常量

常量的值必须是在编译时已知的常量表达式,必须指定类型与值

  • 与C语言的宏定义(宏替换)不同,Rust的const常量的值被直接嵌入到生成的底层机器代码中,而不是进行简单的字符替换

常量名与静态变量命名必须全部大写,单词之间加入下划线

常量的作用域是块级作用域,它们只在声明它们的作用域内可见

参考

  • 2024 Rust现代实用教程:2.1-2.4

http://www.mrgr.cn/news/60240.html

相关文章:

  • 纯GO语言开发RTSP流媒体服务器-RTSP推流直播、本地保存录像、录像回放、http-flv及hls协议分发
  • Linux scp命令
  • electron展示下载进度条
  • STMicroelectronics意法半导体车规芯片系列--亿配芯城(ICgoodFind)
  • Compose 修改默认点击效果
  • OpenCV中的图像通道合并
  • QT linux 打包时库和插件如何生成
  • 行为识别SlowFast
  • 【MAE】掩码自回归编码器(论文复现)
  • Python小白学习教程从入门到入坑------第十七课 内置函数拆包(语法基础)
  • turtle海龟画图print
  • 轨迹规划 | 基于差速运动学的有模型PID算法(附ROS C++仿真)
  • 重磅!WebStorm 个人版免费开放:JetBrains 为个人开发者带来福音
  • 2024年北京海淀区中小学生信息学竞赛预选赛初复题目难度
  • Python忍者:如何悄无声息地获取Taobao商品详情?
  • 陈文自媒体:1年600万+,彻底改变命运!
  • 个人防护装备分割系统:全面扶持小白
  • 构建数据湖仓的开源技术栈有哪些
  • MacOS下载安装Logisim(图文教程)
  • 数据结构-拓扑排序笔记
  • 【RAG】RAG概述
  • 聚焦汽车智能化与电动化︱AUTO TECH 2025 华南展,以展带会,已全面启动,与您相约11月广州!
  • 跨境电商内部售卖系统:基于php的开源解决方案
  • iOS静态库(.a)及资源文件的生成与使用详解(OC版本)
  • conda激活环境失败
  • 趋势丨2024遍地开花的新能源大模型