Rust语言入门:理解基础语法

news/2024/7/24 8:07:35 标签: rust, 算法, 开发语言

大家好,我是[lincyang]。

今天,我们将深入了解Rust编程语言的基础语法,为你打下坚实的Rust编程基础。

Rust简介

Rust是一种系统编程语言,它注重内存安全、并发性和实用性。Rust的设计哲学是提供安全性,而不损失性能。它是一种静态类型语言,具有强大的类型推断能力。

Hello, World!

我们将从传统的“Hello, World!”程序开始,看看Rust的基础语法。

fn main() {

println!("Hello, World!");

}

这是一个完整的Rust程序。让我们逐行解释它:

  1. fn main():这是Rust程序的入口点,fn是函数的关键字,main是函数的名称。
  2. {}:这是函数体,包含了程序的主要逻辑。
  3. println!("Hello, World!");:这是一个宏,用于在控制台输出文本。println!的!表示它是一个宏而不是函数。

注释

在Rust中,注释有两种方式:单行注释和多行注释。

单行注释使用//:

// 这是一个单行注释

多行注释使用/* */:

/*

这是

一个多行

注释

*/

变量和可变性

在Rust中,默认情况下,所有变量都是不可变的。要创建可变变量,需要使用mut关键字。

let x = 5; // 不可变变量

let mut y = 10; // 可变变量

数据类型

Rust有两类基本数据类型:标量(Scalar)和复合(Compound)。

标量类型

  1. 整数:i8、i16、i32、i64、i128、u8、u16、u32、u64、u128。
  2. 浮点数:f32、f64。
  3. 布尔值:bool。
  4. 字符:char。

复合类型

  1. 元组(Tuple):可以包含多个不同类型的值,用于组织数据。
  2. 数组(Array):包含相同类型的固定大小元素。

let tuple: (i32, f64, char) = (42, 3.14, 'A');

let array: [i32; 3] = [1, 2, 3];

控制流

Rust支持常见的控制流结构,包括条件表达式、循环和匹配模式。

条件表达式

let x = 5;

if x > 0 {

println!("x 是正数");

} else if x < 0 {

println!("x 是负数");

} else {

println!("x 是零");

}

循环

Rust有三种主要的循环:loop、while和for。

let mut i = 0;

while i < 5 {

println!("i 的值是:{}", i);

i += 1;

}

for j in 0..5 {

println!("j 的值是:{}", j);

}

匹配模式

let num = 3;

match num {

1 => println!("是一"),

2 => println!("是二"),

3 => println!("是三"),

_ => println!("是其他数字"),

}

结语

在这篇文章中,我们学习了Rust的基础语法,包括变量、数据类型、控制流等重要概念。Rust的语法设计注重安全性和性能,它的类型系统和所有权模型为编写高性能和安全的代码提供了强大的工具。

接下来,我们将深入探讨更多Rust的主题,包括所有权、借用、生命周期等。记得关注我的微信技术公众号,我将持续为大家带来更多有关Rust的技术干货和实践经验,一起探索这个令人兴奋的编程语言!


http://www.niftyadmin.cn/n/5176588.html

相关文章

RT-DETR算法优化改进:Backbone改进 | HGBlock完美结合PPHGNetV2 RepConv

💡💡💡本文独家改进: PPHGNetV2助力RT-DETRHGBlock与PPHGNetV2 RepConv完美结合 推荐指数:五星 HGBlock_PPHGNetV2 | 亲测在多个数据集能够实现涨点 RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_63774211/category_12497375.html ✨✨✨魔改创新RT-DETR…

【第2章 Node.js基础】2.4 Node.js 全局对象(一)

什么是Node.js 全局对象 对于浏览器引擎来说&#xff0c;JavaScript 脚本中的 window 是全局对象&#xff0c;而Node.js程序中的全局对象是 global&#xff0c;所有全局变量(除global本身外)都是global 对象的属性。全局变量和全局对象是所有模块都可以调用的。Node.is 的全局…

docker启动reids Fatal:can not initialize background jobs:

从docker镜像仓库上拉取最新的redis镜像&#xff0c;运行镜像后&#xff0c;发现服务秒退出&#xff0c;查看运行日志&#xff0c;报错&#xff1a;Fatal:can not initialize background jobs&#xff1a; 利用拉取的redis镜像创建的容器一直没有端口号&#xff0c;且状态一直在…

RT-DETR算法优化改进:新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测 | NeurIPS2022

💡💡💡本文独家改进: 多尺度卷积注意力(MSCA),有效地提取上下文信息,新颖度高,创新十足。 1)代替RepC3进行使用; 2)MSCAAttention直接作为注意力进行使用; 推荐指数:五星 RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_63774211/category_12497375.ht…

Java图像编程之:Graphics2D

一、介绍 1、Java图像编程的核心类 BufferedImage&#xff1a;用于表示图像的类&#xff0c;可以进行像素级的操作。Image&#xff1a;表示图像的抽象类&#xff0c;是所有图像类的基类。ImageIcon&#xff1a;用于显示图像的类&#xff0c;可以将图像嵌入到Swing组件中。Ima…

win环境安装supermap-idesktop和iserver发布服务

win环境安装supermap-idesktop和配置许可分享&#xff1a; SuperMap iDesktop 是插件式桌面GIS软件&#xff0c;提供基础版、标准版、专业版和高级版四个版本&#xff0c;具备二三维一体化的数据处理、制图、分析、海图、二三维标绘等功能&#xff0c;支持对在线地图服务的无缝…

leetcode刷题日记:118.Pascal‘s Triangle(杨辉三角)

118.Pascal’s Triangle(杨辉三角&#xff09; 题目给我们一个整数numRows表示杨辉三角形的行数&#xff0c;返回杨辉三角形的前numRows行&#xff0c;下面给出一个杨辉三角形看看它有哪些规律&#xff1b; 可以看出杨辉三角形的每一行的最左侧和最右侧的值都为1. 其余的第…