Rust语言从入门到入坑——(4)Rust语法(上)

news2025/1/12 22:48:10

文章目录

  • 0 引入
  • 1、基础语法
    • 1.1、变量
    • 1.2、常量
    • 1.3、重影
  • 2、数据类型
    • 2.1、整形
    • 2.2、浮点型
    • 2.3、其他
    • 2.注释与打印
    • 2.1 注释
    • 2.2、打印
  • 3、总结


在这里插入图片描述

0 引入

在这里我们需要介绍Rust语法,一共分三部分,第一部分是基础语言,和C语言类比,如果有这样的基础,可以跳过本章,本章主要是说明和C语言一样的地方


1、基础语法

变量,基本类型,函数,注释和控制流,这些几乎是每种编程语言都具有的编程概念,首先应该明白:

  • Rust 是强类型语言,但具有自动判断变量类型的能力;
  • Rust 有其自己的安全机制:尽可能的少去改动已经定义的数据。

1.1、变量

  • 不可变变量:用let 定义 如: let a= 123;
  • 可变变量 :用 let mut 定义如:let mut b =456;

如下代码:

    let a = 123;         //1
    a = "abc";           //2
    a = 4.56;            //3
    a = 456;             //4
    let mut  b =456;     //5
    b = 789;             //6
    let a = 356;         //7

2错误:不能够赋值不同类型
3错误:精度丢失
4错误:不可重新使用,如果要重新赋值,参看6、7
6正确:可以重新赋值
7正确:可以支持重新使用之前的变量,但是1会有警告,定义的值未被使用

1.2、常量

既然不可变变量是不可变的,那不就是常量吗?为什么叫变量?
变量和常量还是有区别的,变量的值可以"重新绑定",但在"重新绑定"以前不能私自被改变,这样可以确保在每一次"绑定"之后的区域里编译器可以充分的推理程序逻辑,看下面代码:

    let a = 123;           //1 定义一个不可变变量
    let a = 356;           //2
    const b:i32 = 123;     //3  定义一个常量
    let b  = 456;          //4

2正确:变量支持重新赋值
4错误:不合法,常量不能重新赋值

1.3、重影

重影的概念与其他面向对象语言里的"重写"(Override)或"重载"(Overload)是不一样的。重影就是刚才讲述的所谓"重新绑定",之所以加引号就是为了在没有介绍这个概念的时候代替一下概念。
重影就是指变量的名称可以被重新使用的机制:如上1.1代码中的//7


2、数据类型

2.1、整形

主要数据类型如下表格:

位长度有符号无符号
8biti8u8
16biti16u16
32biti32u32
64biti64u64
128biti128u128
archisizeusize

注:isize 和 usize 两种整数类型是用来衡量数据大小的,它们的位长度取决于所运行的目标平台,如果是 32 位架构的处理器将使用 32 位位长度整型
整数的表示方法还有如下形式:

进制例子
十进制10_100
八进制0xFF
二进制0o10
字节(只能表示u8)b’C’

注:有的整数中间存在一个下划线,这种设计可以让人们在输入一个很大的数字时更容易判断数字的值大概是多少

2.2、浮点型

Rust 与其它语言一样支持 32 位浮点数(f32)和 64 位浮点数(f64),默认情况下,64.0 将表示 64 位浮点数。

代码如下(示例):

fn main() {
    let x = 2.0;      // f64 
    let y: f32 = 3.0; // f32
}

2.3、其他

其他和C语言很相似了、如布尔型 bool 字符型char
符合类型:元组(),数组[]

如下例子:

let tup: (i32, f64, u8) = (500, 6.4, 1);   //可以包含不同类型
let a = [1, 2, 3, 4, 5];                   //同类型

注:Rust 不支持 ++ 和 –

2.注释与打印

2.1 注释

Rust 中的注释方式与其它语言(C、Java)一样,支持两种注释方式:

// 这是第一种注释方式

/* 这是第二种注释方式 */

/*
 * 多行注释
 * 多行注释
 * 多行注释
 */

注 Cargo 具有 cargo doc 功能,开发者可以通过这个命令将工程中的说明注释转换成 HTML 格式的说明文档。

2.2、打印

主要两个函数,Rust 输出文字的方式主要有两种:println!() 和 print!()
主要区别是后者回复加一个换行符

   let a = 123;
   println!("{}",a);     //{} 相当于占位符
   println!("456");

3、总结

本章总结Rust部分语法,其实和大多数主流语言一样,rust只是在行为上稍加不一样,主要是保证语言的高效性!


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

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

相关文章

从零构建后端项目-创建SpringBoot项目配置MyBatis

目录 主体介绍 创建SpringBoot项目主要步骤 配置MyBatis 整合高级功能 创建SpringBoot项目 配置Tomcat 配置MySQL数据源 配置Redis数据源 配置MongoDB数据源 运行项目,检测配置 配置MyBatis 创建IDEA数据库连接 生成MyBatis各种文件 配置MyBatis 配…

总结902

目标规划: 月目标:6月(线性代数强化9讲,考研核心词过三遍) 周目标:线性代数强化5讲,英语背3篇文章并回诵,检测 每日规划 今日已做 1.背诵前21篇短文,默写了10篇文章。…

智能视频无损放大-Topaz Video AI

今天给各位小伙伴们测试了一款可以使视频智能无损放大的软件——Topaz Video AI。 小编在很早之前也有了解过Topaz系列的软件,都是通过人工智能处理的,对小白新手们很适用,由于使用人工智能方面的软件或程序对硬件要求都比较高,因…

离散数学题目收集整理练习(期末过关进度70%)

✨博主:命运之光 🦄专栏:离散数学考前复习(知识点题) 🍓专栏:概率论期末速成(一套卷) 🐳专栏:数字电路考前复习 🌟博主的其他文章&…

Linux运维监控学习笔记2

Zabbix监控本机: 配置->主机->将Zabbix Server的状态开启。 然后我们还需要在这台机器上安装agent。agent安装在被监控端,收集数据,与监控服务器交互。 # 列出系统上面所有软件名称 rpm -qa |grep zabbix-agent zabbix-agent-3.4.15-…

hello算法笔记之栈与队列

一、栈 遵循先入后出(First In, Last Out)原则的线性数据结构。 只能在栈顶添加或删除元素 链表实现形式: ①栈以链表形式实现: ②以数组形式实现 二、队列 遵循先入先出(First In, First Out)规则的线…

使用WinDbg分析Windows dump文件方法

需要使用WinDbg工具来分析windows系统产生的dump文件,此工具属于Windows SDK的一个组件,在微软官方网站可以下载(链接)。 在安装Windows SDK的过程中,可以选择只安装WinDbg(Debugging Tools for Windows&a…

数据结构——图

文章目录 **一 图的基本概念****1 定义** **二 图的存储及基本操作****1 邻接矩阵法****2 邻接表法****3 十字链表****4 邻接多重表****5 图的基本操作** **三 图的遍历****1 广度优先搜索BFS****2 深度优先搜索DFS****3 图的遍历与连通性** **四 图的应用****1 最小生成树****…

源码编译安装LAMP

文章目录 一.Apache1.什么是apache2.apache的主要特点3.apache的软件版本4.编译安装优点 二.LAMP简介与概述1.LAMP平台概述2.构建LAMP平台顺序3.各组件的主要作用 三.LAMPDISCUZ论坛搭建1.部署Apache1.1 下载apache相关安装包放入服务器中1.2 解压apache的安装进行安装1.3 编译…

SF授权系统源码 V3.7全开源无加密版本

🎉 有需要的朋友记得关赞评,文章底部来交流!!! 🎉 ✨ 源码介绍 2023全新SF授权系统源码 V3.7全开源无加密版本。网站搭建很简单,大致看来一下应该域名解析后上传源码解压,访问域名/i…

如何构建LAMP平台:Apache,MySQL,PHP

如何构建LAMP平台:Apache,MySQL,PHP 一、Apache网站服务:1. Apache的起源(多系统兼容):2.重要特点:3.软件版本:4.编译安装呢http服务器: 二、LAMP简介与概述&…

家中群晖NAS遇到断电如何自动关机

群晖NAS遇到断电时如何自动关机 前置条件实现功能的想法具体实施的步骤开启群晖Linux的SSH登陆安装Putty或是Xshell远程登陆上群晖创建计划任务 前置条件 需要一台UPS(品牌功能不限,只需续航5分钟以上就可以) 实现功能的想法 通过监控网卡…

【备战秋招】每日一题:4月8日美团春招第二题:题面+题目思路 + C++/python/js/Go/java带注释

为了更好的阅读体检,为了更好的阅读体检,,可以查看我的算法学习博客第二题-必经之路 在线评测链接:P1167 题目内容 塔子哥的班主任最近组织了一次户外拓展活动,让班里的同学们一起去爬山。在路上,塔子哥看到了一棵漂…

Windows7 环境下的 Python 版本如何选取?

背景 我需要在不连接互联网的 Windows7 办公电脑上为网页版的办公系统开发一个自动化工具,可以将日常琐碎的操作替代掉。 基本确定了通过 PythonSelenium 的方式来实现网页自动化功能。 首先我需要配置开发环境,安装 Python、VS Code、导入Selenium库、…

提高 React 性能的技巧

1.解决重复渲染问题 我们大多数人都知道虚拟 DOM 是如何工作的,但最重要的是检测何时触发树比较。当我们可以跟踪它时,我们可以控制组件的重新渲染,并最终防止意外的性能流。令人惊讶的是,它并不难捕捉。首先,将 Reac…

uniapp APP端在线升级功能实现讲解——强制或可选升级,下载进度显示

文章目录 概要 需求分析 技术实现梳理 1.是否更新判断: 2.升级弹窗的展示 3.根据升级类型限制操作 4.下载APP监听下载进度 5.下载完自动安装 核心API讲解 1.plus.downloader.createDownload(url,options,completedCallback)(下载) 2.plus.r…

使用SOCKET搭建linux和window实现实时摄像头传输(linux传输win端使用C++mfc显示)--Win端开发

1.使用MFC搭建框架 配置: Window10VS2013opencv249 如果VS和opencv配置不一样,让版本对应 Opencv与VS版本 1.1 MFC项目搭建 通过这些步骤就创建了一个MFC基础项目。 1.2项目属性配置 本项目因为要使用opencv,所以就要配置以下opencv的环境 首先在opencv官网下载…

手机连接adb 相关问题汇总

目录 关于端口占用问题1 关于修改adb 端口配置问题2 方法3 方法4 关于端口占用问题1 转载链接:https://www.jianshu.com/p/902a89b06271 报错信息: error: no device/emulators found error: device still connecting 解决方案: 重启…

Day_50小结

目录 一. 比较和分析各种查找算法 二. 描述各种排序算法的特点和基本思想&比较分析各种排序算法 1. 插入排序 2. 交换排序 3. 选择排序 4. 外部排序 三. 设计一个自己的 Hash 函数和一个冲突解决机制 1. 对于哈希函数的构造: 2. 处理冲突的办法&#…

Mybatis持久层框架 | Lombok搭建

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Lombok Lombok项目是一个java库,它可以自动插入到编辑器和构建工具中,增强java的性能。不需要再写getter、setter或equals方法,只要…