Rust 初体验6

学习 Rust 的同学,大概都有其他语言的背景。仔细分辨与已有知识的差别,或有助于更好地理解Rust。以下是把 C 语言与 Rust 作一初步对比,以见出其中差别。

1.变量声明

C语言使用intfloat等关键字来声明变量的类型,而Rust则使用类型推断,无需显式声明变量类型。

  • 示例(C语言):
int x = 5;
float y = 3.14;
  • 示例(Rust):
let x = 5;
let y = 3.14;

2.函数定义

C语言使用return关键字返回函数结果,而Rust则使用隐式返回值。

  • 示例(C语言):
int add(int a, int b) {return a + b;
}
  • 示例(Rust):
fn add(a: i32, b: i32) -> i32 {a + b
}

3.内存管理

C语言需要手动分配和释放内存,而Rust通过所有权系统自动管理内存。

  • 示例(C语言):
int* create_array(int size) {int* arr = malloc(size * sizeof(int));return arr;
}
  • 示例(Rust):
fn create_array(size: usize) -> Vec<i32> {vec![0; size]
}

4.错误处理

C语言通常使用返回值和全局变量来表示错误状态,而Rust使用Result枚举、Option枚举进行错误处理。

  • 示例(C语言):
int divide(int a, int b) {if (b == 0) {return -1; // 错误状态}return a / b;
}
  • 示例(Rust):
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {if b == 0 {Err("Division by zero")} else {Ok(a / b)}
}

5.循环语句

for循环:C语言使用for关键字进行循环,可以指定初始值、条件和增量。Rust也使用for关键字进行循环,但语法略有不同,通常用于迭代集合或范围。

  • 示例(C语言):
for (int i = 0; i < 5; i++) {printf("%d\n", i);
}
  • 示例(Rust):
for i in 0..5 {println!("{}", i);
}

while循环:C语言使用while关键字进行循环,只要条件为真就会继续执行循环体。Rust也使用while关键字进行循环,与C语言的用法相同。

  • 示例(C语言):
int i = 0;
while (i < 5) {printf("%d\n", i);i++;
}
  • 示例(Rust):
let mut i = 0;
while i < 5 {println!("{}", i);i += 1;
}

注意:Rust 语言的 for、while 循环语句中的条件语句不用加括号。

do-while循环:C语言使用do-while循环,先执行循环体,然后检查条件是否为真。Rust没有内置的do-while循环,但可以通过其他方式实现类似的效果。

  • 示例(C语言):
int i = 0;
do {printf("%d\n", i);i++;
} while (i < 5);
  • 示例(Rust):
let mut i = 0;
loop {println!("{}", i);i += 1;if i >= 5 {break;}
}

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

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

相关文章

RESTful api-- 详解

1. 了解什么是 api 参考链接 – 本人 2. 了解 web 发展阶段 参考链接 – 本人 3. 了解什么是 REST 参考链接 – 菜鸟教程 REST 全称是 Representational State Transfer&#xff0c;中文意思是表述&#xff08;编者注&#xff1a;通常译为表征&#xff09;性状态转移。 RE…

鸿蒙应用开发工程师招聘多吗?工资有多少呢?

随着鸿蒙操作系统的快速普及&#xff0c;越来越多的企业开始重视鸿蒙应用开发人才的培养和引进。那么&#xff0c;目前市场上鸿蒙应用开发工程师招聘多吗&#xff1f;工资有多少呢&#xff1f; 首先&#xff0c;我们来了解一下鸿蒙应用开发工程师的招聘情况。随着鸿蒙操作系统…

第三百五十回

文章目录 1. 概要介绍2. 获取方法2.1 获取语言2.2 获取地址 3.示例代码3. 内容总结 我们在上一章回中介绍了"给geolocator插件提交问题"相关的内容&#xff0c;本章回中将介绍如何获取系统语言.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概要介绍 我们在本…

【plt.imshow显示图像】:从入门到精通,只需一篇文章!【Matplotlib】

【plt.imshow显示图像】&#xff1a;从入门到精通&#xff0c;只需一篇文章&#xff01;【Matplotlib】 &#x1f680; 利用Matplotlib进行数据可视化示例 &#x1f335;文章目录&#x1f335; &#x1f4d8; 1. plt.imshow入门&#xff1a;认识并安装Matplotlib库&#x1f308…

【数据结构】17 二叉树的建立

二叉树的建立 由于树是非线性结构&#xff0c;创建一颗二叉树必须首先确定树中结点的输入顺序&#xff0c;常用方法是先序创建和层序创建。 层序创建所用的节点输入序列是按数的从上至下从左到右的顺序形成的各层的空结点输入数值0。在构造二叉树过程中需要一个队列暂时存储各…

gitlab runner 安装、注册、配置、使用(K8S部署)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

C++中获取成员函数地址的方法

C中获取成员函数地址的方法 文章目录 C中获取成员函数地址的方法[toc]前言方法1&#xff1a;通过联合体的共享储存机制方法2&#xff1a;通过汇编取成员函数偏移得到地址调用方法和测试案例 前言 ​ 这里我一共总结了两种目前可以说是最高效易用的方法来获取成员函数地址&…

深度学习主流开源框架:Caffe、TensorFlow、Pytorch、Theano、Keras、MXNet、Chainer

2.6 深度学习主流开源框架 表2.1 深度学习主流框架参数对比 框架关键词总结 框架关键词基本数据结构&#xff08;都是高维数组&#xff09;Caffe“在工业中应用较为广泛”&#xff0c;“编译安装麻烦一点”BlobTensorFlow“安装简单pip”TensorPytorch“定位&#xff1a;快…

Vue2源码梳理:vdom结构与createElement的实现

vdom 结构 浏览器原生dom对象&#xff0c;本身就是一个非常复杂的对象&#xff0c;单单把 div 这个dom对象拿出来&#xff0c;遍历它的属性&#xff0c;将是一个庞大的存在因为浏览器的标准就是把这个dom设计的非常复杂&#xff0c;所以当我们去频繁的操作dom的话&#xff0c;…

模板(个人学习笔记黑马学习)

1、函数模板 语法: template<typename T> 函数声明或定义 解释: template --- 声明创建模板 typename --- 表面其后面的符号是一种数据类型&#xff0c;可以用class代替通用的数据类型&#xff0c;名称可以替换&#xff0c;通常为大写字母 T -- 通用的数据类型&#xff0…

654. 最大二叉树

654. 最大二叉树 题目链接&#xff1a;654. 最大二叉树 代码如下&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* T…

探索设计模式的魅力:揭秘模版方法模式-让你的代码既灵活又可维护

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 一、开篇二、应用场景一坨坨代码实现存在的问题 三、解决方案模式方法结构示意图及说明用模板方法模式重构示例解决的问题 四、工作原理使用模板方法模式重写示例结构图核心结构&#xff1a;抽象类和具体实现 五、总结…

【Effective Objective - C】—— 内存管理

【Effective Objective - C】—— 内存管理 前言29.理解引用计数引用计数工作原理关闭ARC模式属性存取方法中的内存管理自动释放池保留环要点 30.以ARC简化引用计数使用ARC时必须遵守的方法命名规则变量的内存管理语义ARC如何清理实例变量要点 31.在dealloc方法中只释放引用并解…

基于深度置信网络的多模态过程故障评估方法及应用

源自&#xff1a;自动化学报 作者&#xff1a;张凯, 杨朋澄, 彭开香, 陈志文 “人工智能技术与咨询” 发布 摘 要 传统的多模态过程故障等级评估方法对模态之间的共性特征考虑较少, 导致当被评估模态故障信息不充分时, 评估的准确性较低. 针对此问题, 首先, 提出一种共性–…

书生·浦语大模型实战营学习总结

书生浦语大模型实战营学习总结 实战营课程内容个人笔记汇总个人作业汇总个人大作业总结 实战营课程内容 为了推动大模型在更多行业落地开花&#xff0c;让开发者们更高效的学习大模型的开发与应用&#xff0c;上海人工智能实验室重磅推出书生浦语大模型实战营&#xff0c;为广…

Arrays工具类的常见方法总结

一、Arrays.asList( ) 1.作用&#xff1a;Arrays.asList( )方法的作用是将数组转换成List&#xff0c;将List中的全部集合对象添加至ArrayList集合中 2.参数&#xff1a;动态参数 (T... a) 3.返回值&#xff1a;List 集合 List<T> 4.举例&#xff1a; package com…

删除windows自带输入法

ctrl shift F 搜狗简繁体切换

【第二十四课】二分图:acwing-860染色法判定二分图 / acwing-861二分图的最大匹配 ( c++代码 )

目录 二分图是什么 acwing-860染色法判定二分图 染色法 代码 acwing-861二分图的最大匹配 思路 代码 二分图是什么 学习二分图的目的就是一些题目可以简化成二分图的模型来求解。 二分图也就是&#xff1a;一个无向图顶点集&#xff0c;分成了两堆顶点(可以理解为两…

分布式文件系统 SpringBoot+FastDFS+Vue.js【三】

分布式文件系统 SpringBootFastDFSVue.js【三】 七、创建后台--分角色管理7.1.创建后台数据库表7.2.创建实体类7.2.1.Admin7.2.2.Menu7.2.3.MenuBean7.2.4.Role7.2.5.RoleMenu 7.3.编辑配置文件application.yml7.4.编写工具类7.4.1.AuthContextHolder7.4.2.HttpUtils7.4.3.Stri…

《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)

文章目录 7.1 使用 Go Modules 管理依赖 - 掌舵向未来7.1.1 基础知识讲解7.1.2 重点案例&#xff1a;Web 服务功能描述实现步骤扩展功能 7.1.3 拓展案例 1&#xff1a;使用数据库功能描述实现步骤扩展功能 7.1.4 拓展案例 2&#xff1a;集成 Redis 缓存功能描述实现步骤扩展功能…