Rust教程初识

news2024/11/24 7:22:19

Rust 教程

Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。

Rust 语言由 Mozilla 开发,最早发布于 2014 年 9 月。Rust 的编译器是在 MIT License 和 Apache License 2.0 双重协议声明下的免费开源软件。截至目前( 2020 年 1 月)最新的编译器版本是 1.41.0。

Rust 官方在线工具: https://play.rust-lang.org/。

Rust 系列文章内容由 Sobin 收集整理。


Rust语言的特点

  • 高性能 - Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。

  • 可靠性 - Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。

  • 生产力 - Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具 —— 包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。


Rust的应用

Rust 语言可以用于开发:

  • 传统命令行程序 - Rust 编译器可以直接生成目标可执行程序,不需要任何解释程序。
  • Web 应用 - Rust 可以被编译成 WebAssembly,WebAssembly 是一种 JavaScript 的高效替代品。
  • 网络服务器 - Rust 用极低的资源消耗做到安全高效,且具备很强的大规模并发处理能力,十分适合开发普通或极端的服务器程序。
  • 嵌入式设备 - Rust 同时具有JavaScript 一般的高效开发语法和 C 语言的执行效率,支持底层平台的开发。

谁适合阅读本教程?

本教程对于初级的编程知识将默认读者已经掌握,所以如果你阅读本教程,你需要对初级的编程知识有一定的了解(最好已经初识 C/C++ 或 JavaScript 编程语言)。

第一个 Rust 程序

Rust 语言代码文件后缀名为 .rs, 如 runoob.rs

实例:runoob.rs 文件

fn main() {  
    println!("Hello World!");  
}  

运行实例 »

使用 rustc 命令编译 runoob.rs 文件:

$ rustc runoob.rs   # 编译 runoob.rs 文件

编译后会生成 runoob 可执行文件:

$ ./runoob    # 执行 runoob
Hello World!

总结

  1. Rust 是什么 (what)
    1. 更严苛审查的编译运行式语言
  2. why
    1. 更高的安全性?
    2. 不是很明确说实话。从了解到的资料来看,它被认为是c、c++的上位平替但是大家都提到了更陡峭的学习曲线。
  3. how
    1. 看圣经
  4. when
    1. 也许是十年后的顶峰
  5. where
    1. 也许是十年后的大厂
  6. 所以,这是一场对未来的豪赌。即使它来自于2006年。
  7. 中二的发言结束了,现在让我们回到当前。从编码思想来看,这并不是我目前能回答的问题。那么就和我知道的编码语言来对比吧。

C、C++

目前我没看编码扩展。
从刚接触的情况来看,他应当是将部分内容内化到了编码器中,包括了 最基础的 #include <stdio.h> and #include <iosteam>

以至于他只有最基础的 函数类型 + 函数名 + 函数内容。

对了,他甚至都没有返回值。

以及神奇的 ! 我不知道这个这个是什么,但是去掉它,就没法执行得到结果了。这种在函数中加入符号的事情实在是太 cooooooooooooool了。

Python

他有点类似于 def 的方式去定义函数。但是他不依靠缩进,而是直接干净了当的使用花括号圈定了作用域。
这可是在是泰库辣!

并且,不同于 Python 中 万物皆变量的思想,很明显在Rust中是有函数的,并且将main()作为了程序编译时启动入口。
在编译成汇编时的那个程序jmp的地址。

Golang

应对最新了解的golang ,不做过多评判。
但是
可以简单索索

首先,它没有runbuild 的双线选择路线。 可惜不能做脚本了。

其次,没有包,最起码没有独特的 package main来启动 最最最独特的 main()接口。
当然最起码它们都有()来表示函数,还有{}来规定作用域,不像python。使用:和 tab缩进。
这在黏贴到linux下时可能要改一些缩进错误,这样的的无用功。

和ChatGPT提问时,那可怜的token 数。

当然,它们都有编译然后执行可执行程序的用法。应当有编译后改名的方式,不然那也太不coooooooooooool了。


参考链接

  • Rust 官方网站
  • Rust 官方文档
  • Rust Play
  • Visual Studio Code
  • Rust语言圣经(Rust Course)

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

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

相关文章

bmp图片怎么转jpg格式?思路提供

BMP和JPG是两种常见的图片格式。BMP文件相对较大&#xff0c;无损压缩&#xff0c;而JPG文件则相对较小&#xff0c;有损压缩。当我们需要在保持图片质量的同时减小文件大小时&#xff0c;我们可以将BMP文件转换为JPG文件。在本文中&#xff0c;我们将介绍如何将BMP文件转换为J…

短视频矩阵源码技术开发

短视频矩阵是一种常见的视频编码标准&#xff0c;它通过将视频分成多个小块并对每个小块进行压缩来实现高效的视频传输。在本文中&#xff0c;我们将介绍短视频矩阵的原理和实现&#xff0c;并提供示例代码。 $where_time array(); // 时间 $where_time[] array(name>fbr…

第5章:SpringMVC的视图

一、SpringMVC的视图 SpringMVC中的视图是View接口&#xff0c;视图的作用渲染数据&#xff0c;将模型的Model中的数据展现给用户SpringMVC视图种类很多&#xff0c;默认有转发视图和重定向视图当工程引入jstl依赖&#xff0c;转发视图自动转换为JstlView若使用视图技术是Thym…

【新版】系统架构设计师 - 新老教材对比分析

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 新老教材比较新版教材章节分析 新老教材比较 提示&#xff1a;请自行购买并浏览新版系统架构设计师教材 原教材&#xff1a;2009年出版&#xff0c;共21章&#xff0c;572页。新教材&#xff1a;2022年出…

紧急防勒索病毒的防御方案

一、适用目标&#xff08;校园网、企业网&#xff0c;windows系列的操作系统&#xff09;&#xff1a; 所有在校园内运行windows系统的电脑&#xff0c;并非只感染服务器操作系统&#xff0c;单机照样感染。会将你电脑中的所有文件全部加密&#xff0c;部分已感染案例有2个共同…

Yolov8轻量级:Next-vit,用于现实工业场景的下一代视觉 Transformer

1.Next-vit介绍 论文:https://arxiv.org/pdf/2207.05501.pdf 由于复杂的注意力机制和模型设计,大多数现有的视觉 Transformer(ViT)在现实的工业部署场景中不能像卷积神经网络(CNN)那样高效地执行。这就带来了一个问题:视觉神经网络能否像 CNN 一样快速推断并像 ViT 一样…

DVPP媒体数据处理图片解码问题案例

DVPP&#xff08;Digital Vision Pre-Processing&#xff09;是昇腾AI处理器内置的图像处理单元&#xff0c;通过AscendCL媒体数据处理接口提供强大的媒体处理硬加速能力&#xff0c;主要功能包括图像编解码、视频编解码、图像抠图缩放等。 本期就分享几个关于DVPP图片解码问题…

Web的基本漏洞--越权漏洞

目录 一、越权漏洞介绍 1.越权漏洞的原理 2.越权漏洞的分类 3.越权漏洞产生的原因 一、越权漏洞介绍 越权漏洞指的是应用在检查授权时存在纰漏&#xff0c;可以让攻击者获得低权限用户账户后&#xff0c;利用一些方式绕过权限检查&#xff0c;可以访问或者操作其他用户或者…

如何选择振动传感器?实现设备健康监测和预测性维护的第一步

随着工业设备的日益复杂和关键性的增加&#xff0c;设备健康监测和预测性维护成为保障生产效率和设备可靠性的关键要素。而振动传感器作为常用的监测工具&#xff0c;在设备健康监测中扮演着重要角色。 图.设备监测&#xff08;iStock&#xff09; 本文将介绍如何选择振动传感…

聊聊公司技术上的奇葩规定——计算机使用

首先说明下公司的技术架构。 MySQL PHP Java&#xff0c;纯互联网应用&#xff0c;Docker 容器部署微服务在 AWS 上面。 数据上没有过多敏感性&#xff0c;不涉及到很多敏感数据&#xff0c;身份识别信息通常使用的是第三方平台&#xff0c;我们本地不存储用户身份信息。 电…

跟着LearnOpenGL学习6--变换

文章目录 一、前言二、向量2.1、向量与标量运算2.2、向量取反2.3、向量加减2.4、长度2.5、向量相乘 三、矩阵3.1、矩阵的加减3.2、矩阵的数乘3.3、矩阵相乘 四、矩阵与向量相乘4.1、单位矩阵4.2、缩放4.3、位移4.4、旋转4.5、矩阵的组合 五、变换实战5.1、GLM配置5.2、GLM测试5…

学习HTTP2

这是有关HTTP最后一部分内容的学习啦~今天一起来学习HTTP/2&#xff01; HTTP2 HTTP/2&#xff08;超文本传输协议第2版&#xff0c;最初命名为HTTP 2.0&#xff09;&#xff0c;简称为h2&#xff08;基于TLS/1.2或以上版本的加密连接&#xff09;或h2c&#xff08;非加密连接…

javaweb session与cookie

Cookie Cookie是本地的存储数据&#xff0c;是键值对 注意一定要使用resp.addCookie才能返回cookie cookie修改 修改的话也是调用addCookie&#xff0c;对相同key的进行修改&#xff0c;作用于set-cookie响应头。 可以新建cookie&#xff0c;add进去&#xff0c;也可以在用户传…

投出去的简历石沉大海,1个月只有2个面试邀约,这正常吗?

我一介大专生&#xff0c;干了2年的点工&#xff0c;想着干这么长时间测试了&#xff0c;怎么也要涨薪冲击个12K了吧 去年我跟老板提了几次&#xff0c;好像都不怎么搭理我 今年金三银四&#xff0c;涨薪那边还是没着落&#xff0c;而我已经急不可耐了&#xff0c;既然你不给我…

28 # commander 的用法

node 和前端的区别 前端里面有 BOM 和 DOM&#xff0c;服务端没有&#xff0c;也没有 window服务端里面有 global 全局对象&#xff08;浏览器也有 global&#xff0c;只不过访问属性的时候都是通过 window 来代理&#xff0c;没有直接访问 global&#xff0c;也不能直接访问 …

Oracle-Linux修改字符集

Oracle-修改字符集 连接查询字符集立即关闭数据库并终止所有用户会话开启挂载启用受限会话设置作业队列进程数为0设置 AQ 时间管理进程数为 0打开&#xff08;Open&#xff09;一个已经挂载&#xff08;Mount&#xff09;的数据库修改数据库字符集为AL32UTF8立即关闭数据库并终…

前端零基础入门,好程序员手把手教你!学会CSS语法规则!

今天来学习CSS语法规则&#xff0c;想要入门前端这一岗位&#xff0c;就必须得同时掌握有关于它的三门编程语言&#xff0c;分别是HTML、CSS以及javascript。这三门编程语言的语法各不相同&#xff0c;今天好程序员带大家来认识CSS语法规则。 想要学习一门编程语言&#xff0c;…

Linux4.9 Tomcat部署及优化

文章目录 计算机系统5G云计算第六章 LINUX Tomcat部署及优化一、Tomcat概述1.Tomcat核心组件2.什么是 servlet3.什么是 JSP4.Tomcat 功能组件结构5.Container 结构分析6.Tomcat 请求过程7. 配置文件 二、Tomcat 服务部署1.关闭防火墙&#xff0c;将安装 Tomcat 所需软件包传到/…

利用Taro打造灵活的移动App架构

最近公司的一些项目需要跨端框架&#xff0c;技术老大选了Taro&#xff0c;实践了一段时间下来&#xff0c;愈发觉得Taro是个好东西&#xff0c;所以在本篇文章中稍微介绍下。 什么是Taro&#xff1f; Taro&#xff08;或称为Taro框架&#xff09;是一种用于构建跨平台应用程…

springboot3深度学习(在更)

jar包外进行配置文件的修改 在jar包的同目录创建application.properties文件&#xff0c;直接在这个文件中配置对应的信息&#xff0c;就可以完成对应的修改&#xff0c;我们就可以做到不修改源代码。 例子: 测试结果为下: yml文件和properties文件都可以实现此功能&#xf…