Rust学习:HelloWorld

Rust学习:HelloWorld

  • HelloWorld
    • Rust语言简介
    • 主要特点
    • 先看程序
    • 分析程序

HelloWorld

Rust语言简介

Rust是一种系统编程语言,旨在提供内存安全、并发性和性能。它由Mozilla Research开发,旨在解决C和C++语言中的一些关键问题,特别是与内存安全相关的问题。Rust通过其所有权模型提供了内存安全而无需垃圾回收,这使其成为编写高效且可靠的系统程序的理想选择。

主要特点

  1. 内存安全: Rust的所有权、借用和生命周期机制可以在编译时防止诸如空指针解引用和数据竞争等常见错误。
  2. 并发编程: Rust提供了一系列并发编程工具,使得编写无数据竞争的多线程代码变得更加容易和安全。
  3. 零成本抽象: Rust的抽象不会引入运行时开销。这意味着Rust能够在不牺牲性能的情况下提供高级的抽象能力。
  4. 错误处理: Rust的错误处理机制,如ResultOption枚举,以及错误传播操作符?,使得错误的管理变得更加直观和一致。

先看程序

创建文件hello_world.ts,添加内容如下:

fn main() {println!("Hello World! My first Rust project.")
}

执行命令:

rustc hello_world.rs./hello_world

在这里插入图片描述

分析程序

首先呢,整个程序是很简单的一个 HelloWorld。现在我们看下在这个过程中,Rust 为我们做了什么。

同我常使用的 Java Go一致,我们也是存在一个main方法的。这是整个程序的入口。

println!("Hello World! My first Rust project.");

这是一个输出。在Java中,我们的输出是这样的:

System.out.println("Hello World! My first Rust project.")

在Go中,我们的输出是这样的:

fmt.Println(""Hello World! My first Rust project."")

大家都是一样的。在Go中,我们需要去执行go build编译一下,才能去执行这个程序的输出。同样,在Rust中,我们同样需要进行编译。

rustc hello_world.rs

这样就可以完成我们的编译过程了。最后就是执行了。

这里需要注意下:println!(""); 在 Rust 中属于宏。println! 调用 Rust 宏。如果改为调用函数,则应该将其输入为 println(不含 !)。我们将在第 19 章中更详细地讨论 Rust 宏。现在只需要知道,当看到一个 !,则意味着调用的是宏而不是普通的函数。

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

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

相关文章

ESP8266 TCP/串口透传

简介 先在PC上做测试, 使用串口软件对ESP8266 模块进行设置, 使用网络助手软件与串口软件进行自由收发设置 ATRST ## 复位 ATCWMODE_DEF1 ## 设置为Station模式 ATCWJAP_DEF“路由器wifi名称”,“路由器wifi密码” ## 设置ESP连接的路由器名称密码 ATCIPSTART“TCP”,“192.1…

防止头文件重复包含

1. 使用#ifndef 这种方式是可跨平台的 #ifndef _TESTLIB1_ /*这种是跨平台的*/ #define _TESTLIB1_int sum(int a, int b); int sub(int a, int b);#endif // !TESTLIB12.使用#pragma once 使用之后,表示该文件只会被编译一次,但是只能在vs和vc等IDE使用。不具备跨平台。 注意:…

系统架构设计师教程(九)软件可靠性基础知识

软件可靠性基础知识 9.1 软件可靠性基本概念9.1.1 软件可靠性定义9.1.2 软件可靠性的定量描述9.1.3 可靠性目标9.1.4 可靠性测试的意义9.1.5 广义的可靠性测试与狭义的可靠性测试 9.2 软件可靠性建模9.2.1 影响软件可靠性的因素9.2.2 软件可靠性的建模方法9.2.3 软件的可靠性模…

15个热门的开源数据可视化项目

数据可视化(即 BI仪表盘)是图形表示的数据。它涉及产生将表示的数据之间的关系传达给图像查看者的图像。这种通信是通过在可视化过程中使用图形标记和数据值之间的系统映射来实现的。该映射建立了如何在视觉上表示数据值,确定图形标记的属性(例如大小或颜色)如何以及在多大程…

Appium安装及配置

一、前置说明 Appium 是一个用于自动化移动应用程序的开源测试框架,它支持 Android 和 iOS,同时支持使用多种编程语言(如 Java、Python、JavaScript 等)进行测试脚本的编写。 二、操作步骤 1. 安装Node.js Appium Server 由 n…

前端学习——指令

vue作为前端框架,为了简化或实现一些特定功能,提供了很多指令,那什么是指令呢? 所谓的指令就是能够完成特定功能的一些vue语法,比如属性绑定指令v-bind,事件绑定指令v-on,循环指令v-for等。在v…

AI中的强化学习是怎么做的呢?

1. 什么是强化学习 其他许多机器学习算法中学习器都是学得怎样做,而强化学习(Reinforcement Learning, RL)是在尝试的过程中学习到在特定的情境下选择哪种行动可以得到最大的回报。在很多场景中,当前的行动不仅会影响当前的rewar…

软文营销的重要性,媒介盒子为你解答

信息茧房环立且用户注意力稀缺的时代下,品牌方唯有在内容上精耕细作才能吸引用户。软文营销能够帮助公司吸引流量,建立与消费者的信任联系,同时增加转化并产生更多的业务。接下来媒介盒子就和大家聊聊:软文营销的重要性。 一、 可…

BDD - Python Behave 入门

BDD - Python Behave 入门 Behave 是什么Behave 的主要特点和组成部分Behave 实践安装 BehaveBehave 项目目录结构创建项目创建 Feature 文件创建步骤定义文件 执行用例执行全部用例执行部分用例 生成报告生成 Json report生成 HTML 报告生成 Junit report生成 Cucumber report…

老师的责任和义务

作为一名老师,我们的责任和义务是重大的。在教育领域,我们扮演着至关重要的角色,肩负着培养下一代人才的重任。下面,我将以知乎的口吻,从几个方面谈谈老师的责任和义务。 确保学生获得高质量的教育。这包括制定合理的教…

广州华锐互动:船舶安全事故3D虚拟还原系统模拟海上事故发生,帮助员工提高安全意识

随着科技的不断发展,人们对于安全问题的关注度越来越高。在船舶行业中,由于船舶的特殊性和复杂性,船舶事故的发生往往会造成严重的人员伤亡和财产损失。为此,船舶安全事故3D虚拟还原系统应运而生,为船舶安全管理和培训…

GPTs | Actions应用案例

上篇文章说道,如何使用创建的GPTs通过API接口去获取外部的一些信息,然后把获取的外部信息返回给ChatGPT让它加工出来,回答你的问题,今天我们就来做一个通俗易懂的小案例,让大家来初步了解一下它的使用法! …

其实,BI数据分析远比你想象的简单

BI数据分析远比你想象中的简单。以前的数据分析要IT取数开发报表,现在的BI数据分析,业务人自己就能在平台上精准取数并开发报表,甚至奥威BI大数据分析工具还能提供标准化BI方案,0开发,开箱即得百张BI报表,完…

Go语言基础:深入理解结构体

Go语言基础:深入理解结构体 引言:Go语言与结构体的重要性结构体的定义与声明结构体与方法结构体的嵌入与匿名字段结构体的继承与多态性结构体与性能优化结论:结构体在Go中的应用场景 引言:Go语言与结构体的重要性 在当今迅速发展…

FreeRTOS之任务状态查询

1、相关API函数的使用 uxTaskPriorityGet(Task1Task_Handler);//传入task1的任务句柄,获取任务优先级 vTaskPrioritySet(Task1Task_Handler,30);//改变任务优先级 task_num uxTaskGetNumberOfTasks();//获取任务数量 #include "sys.h" #include "delay.h"…

mysql SQL执行超时问题

show variables like max_execution_time 使用这个命令查看了,没有设置sql执行超时时间,那么大概率问题就出在阿里的Druid数据库连接池出了问题 尝试着socketTimeout由60000毫秒改成10000毫秒,果然执行了十几秒就超时报错了 socketTime…

BWS2000倾角传感器c++测试代码_时间延迟与时间同步问题【3】

详见昨天做的测试代码,代码网址:BWS2000倾角传感器c测试代码【2】-CSDN博客文章浏览阅读268次,点赞7次,收藏8次。倾角传感器测试与编写思路https://blog.csdn.net/m0_47489229/article/details/135128748 问题一:新的…

NVIDIA NCCL 源码学习(十二)- double binary tree

上节我们以ring allreduce为例看到了集合通信的过程,但是随着训练任务中使用的gpu个数的扩展,ring allreduce的延迟会线性增长,为了解决这个问题,NCCL引入了tree算法,即double binary tree。 double binary tree 朴素…

八:爬虫-MySQL基础

一:MySQL数据库基础 1.MySQL数据库介绍 MySQL是一个[关系型数据库管理系统],由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Rela…

数据结构 | 北京大学期末试卷查漏补缺

目录 顺序存储 优点 缺点 适用于: 链式存储 优点 缺点 适用于: 折半查找为什么要使用顺序存储结构 树的存储结构​编辑 对于一个数据结构,一般包括 DFS&BFS 什么是递归程序 C语言不带头结点的单链表逆置 检测字符…