什么是Rust?

Rust is a programming language focused on safety, particularly safe concurrency, supporting functional and imperative-procedural paradigms. Rust is syntactically similar to C++, but it provides memory safety without using garbage collection.
Rust是一种专注于安全性的编程语言,特别是安全并发,支持函数式和强制过程式范式。Rust在语法上类似于C++,但它提供了内存安全,而不使用垃圾收集。

It achieves this through a system of ownership with a set of rules that the compiler checks at compile time. Though it does not prevent all possible bugs, it guarantees memory safety by ensuring that certain kinds of bugs, like buffer overflows or access to uninitialized memory, are caught during compilation. If you didn’t read my last reading please have a look through that.
它通过一个所有权系统和一组编译器在编译时检查的规则来实现这一点。虽然它不能防止所有可能的错误,但它通过确保在编译期间捕获某些类型的错误(如缓冲区溢出或对未初始化内存的访问)来保证内存安全。

Rust has low latency Rust具有低延迟

Latency for a round-trip network request and response depends both on network latency and service latencyNetwork latency is affected by many factors, such as transmission medium, propagation distance, router efficiency, and network bandwidth.
往返网络请求和响应的延迟取决于网络延迟和服务延迟。网络延迟受许多因素影响,例如传输介质、传播距离、路由器效率和网络带宽。

Service latency depends on many factors, such as I/O delays in processing the request, whether there is a garbage collector that introduces non-deterministic delays, Hypervisor pauses, the amount of context switching (e.g., in multithreading), serialization and deserialization costs, etc.
服务延迟取决于许多因素,例如处理请求时的I/O延迟、是否存在引入非确定性延迟的垃圾收集器、Hypervisor暂停、上下文切换量(例如,在多线程中)、串行化和非串行化成本等。

From a purely programming language perspective, Rust provides low latency due to its low-level hardware control as a systems programming language.
从纯粹的编程语言的角度来看,Rust提供了低延迟,因为它是一种系统编程语言,具有低级别的硬件控制。

Rust does not have a garbage collector or runtime, and it has native support for non-blocking I/O, a good ecosystem of high-performance async (non-blocking) I/O libraries and runtimes, and zero-cost abstractions as a fundamental design principle of the language.
Rust没有垃圾收集器或运行时,它对非阻塞I/O有原生支持,一个良好的高性能非阻塞I/O库和运行时生态系统,以及作为语言基本设计原则的零成本抽象。

Zero-Cost Abstractions 零成本抽象

Rust’s “zero-cost abstractions” mean that its abstractions cost as little as possible in terms of runtime performance. In practice, using high-level abstractions in Rust does not result in slower code than if you wrote your program in a lower-level language. This principle ensures that developers do not have to compromise on expressiveness or safety for the sake of performance.
Rust的“零成本抽象”意味着它的抽象在运行时性能方面的成本尽可能少。实际上,在Rust中使用高级抽象并不会导致代码比用低级语言编写程序更慢。这一原则确保开发人员不必为了性能而在表达性或安全性上做出妥协。

Additionally, by default, Rust variables live on the stack, which is faster to manage.
此外,默认情况下,Rust变量位于堆栈上,这更容易管理。

Rust enables fearless concurrency
Rust支持无畏的并发

Rust is a concurrency-friendly language that enables developers to use the power of multi-core processors. Rust provides two types of concurrency: classic multithreading and asynchronous I/O:
Rust是一种并发友好的语言,使开发人员能够使用多核处理器的功能。Rust提供了两种类型的并发:经典多线程和异步I/O:

  • Multithreading — Rust’s traditional multithreading support provides for both shared-memory and message-passing concurrency. Type-level guarantees are provided for the sharing of values. Threads can borrow values, assume ownership, and transition the scope of a value to a new thread. Rust also provides data-race safety, which prevents thread-blocking, improving performance.
    多线程-Rust的传统多线程支持同时提供共享内存和消息传递并发。类型级别的保证是为了共享值而提供的。线程可以借用值,取得所有权,并将值的范围转换到新线程。Rust还提供了数据竞争安全,防止线程阻塞,提高性能。
  • In order to improve memory efficiency and avoid the copying of data shared across threads,
    为了提高内存效率并避免复制跨线程共享的数据,
  • Rust provides reference counting as a mechanism to track the use of a variable by other processes or threads. The value is dropped when the count reaches zero, which provides for safe memory management. Additionally, mutexes are available in Rust for data synchronization across threads. References to immutable data need not use mutex.
    Rust提供引用计数作为一种机制来跟踪其他进程或线程对变量的使用。当计数达到零时,该值将被删除,这提供了安全的内存管理。此外,互斥锁在Rust中可用于跨线程的数据同步。对不可变数据的引用不需要使用互斥量。
  • Async I/O — Async event-loop–based non-blocking I/O concurrency primitives are built into the Rust language with zero-cost futures and async-await. Non-blocking I/O ensures that code does not hang while waiting for data to be processed.
    Async I/O -基于Async事件循环的非阻塞I/O并发原语内置于Rust语言中,具有零成本future和alphanc-await。非阻塞I/O确保代码在等待数据处理时不会挂起。

Further, Rust’s rules of immutability provide for high levels of data concurrency.
此外,Rust的不变性规则提供了高级别的数据并发性。

Rust is a productive language
Rust是一种生产性语言

Even though Rust is first a systems-oriented programming language, it also adds the quality-of-life features of higher-level and functional programming languages. These are a few of the higher-level abstractions in Rust that make for a productive and delightful developer experience:
尽管Rust首先是一种面向系统的编程语言,但它也增加了高级和函数式编程语言的生活质量特性。这些是Rust中的一些更高级别的抽象,可以为开发人员提供高效和愉快的体验:

  • Closures with anonymous functions
    使用匿名函数的闭包
  • Iterators 迭代器
  • Generics and macros 泛型和宏
  • Enums such as Option and Result
    枚举,如Option和Result
  • Polymorphism through traits
    通过性状的多态性
  • Dynamic dispatch through Trait objects
    通过Trait对象进行动态分派

Rust not only allows developers to build efficient, safe, and performant software, it also optimizes for developer productivity with its expressiveness.
Rust不仅允许开发人员构建高效,安全和高性能的软件,还通过其表现力优化了开发人员的生产力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[大模型]ChatGLM3-6B Transformers部署调用

ChatGLM3-6B Transformers部署调用 环境准备 在autodl平台中租一个3090等24G显存的显卡机器,如下图所示镜像选择PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的JupyterLab,并且打开其中的终端开始环境配置、模型下载…

在 Python 中使用 Turtle 绘制火影忍者

火影忍者是一个流行的动漫角色,它是最受欢迎的动漫之一,下面的代码将向您展示如何使用 python Turtle 绘制火影忍者。 import turtle turtle.Screen().bgcolor("#eeeeee") draw turtle.Turtle() draw.pencolor("red") draw.pensi…

FPGA:图像数字细节增强算法(工程+仿真+实物,可用毕设)

目录 日常唠嗑一、视频效果二、硬件及功能1、硬件选择2、功能3、特点 未完、待续……四、工程设计五、板级验证六、工程获取 日常唠嗑 有2个多月没写文章了,又是老借口:“最近实在是很忙”🤣,不过说真,确实是比较忙&am…

Spring与Spring Boot的区别:从框架设计到应用开发

这是我自己开发的一款小程序,感兴趣的可以体验一下: 进入正题: 在Java开发领域,Spring和Spring Boot都是备受推崇的框架,它们为开发人员提供了丰富的功能和便捷的开发体验。然而,许多人对它们之间的区别仍…

【状态机dp】【 排序 】 2809使数组和小于等于 x 的最少时间

本文涉及知识点 【状态机dp】 排序 LeetCode 2809. 使数组和小于等于 x 的最少时间 给你两个长度相等下标从 0 开始的整数数组 nums1 和 nums2 。每一秒&#xff0c;对于所有下标 0 < i < nums1.length &#xff0c;nums1[i] 的值都增加 nums2[i] 。操作 完成后 &…

MySQL-多表查询:多表查询分类、SQL99语法实现多表查询、UNION的使用、7种SQL JOINS的实现、SQL99语法新特性、多表查询SQL练习

多表查询 1. 一个案例引发的多表连接1.1 案例说明1.2 笛卡尔积&#xff08;或交叉连接&#xff09;的理解1.3 案例分析与问题解决 2. 多表查询分类讲解分类1&#xff1a;等值连接 vs 非等值连接等值连接非等值连接 分类2&#xff1a;自连接 vs 非自连接分类3&#xff1a;内连接…

结构型模式--3.组合模式【草帽大船团】

1. 好大一棵树 路飞在德雷斯罗萨打败多弗朗明哥之后&#xff0c;一些被路飞解救的海贼团自愿加入路飞麾下&#xff0c;自此组成了草帽大船团&#xff0c;旗下有7为船长&#xff0c;分别是&#xff1a; 俊美海贼团75人 巴托俱乐部56人 八宝水军1000人 艾迪欧海贼团4人 咚塔塔海…

Leetcode223. 矩形面积

Every day a Leetcode 题目来源&#xff1a;223. 矩形面积 解法1&#xff1a;数学 两个矩形覆盖的总面积等于两个矩形的面积之和减去两个矩形的重叠部分的面积。由于两个矩形的左下顶点和右上顶点已知&#xff0c;因此两个矩形的面积可以直接计算。如果两个矩形重叠&#xf…

Datacom HCIP笔记-MPLS协议 之二

在Ingress节点执行该命令时&#xff0c;触发所有的32位路由建立LDPLSP。 在Egress节点执行该命令时&#xff0c;触发本地32位路由建立LDPLSP&#xff0c; egress就是主机路由始发路由器 ingress就是主机路由非始发路由器 默认情况下&#xff1a;华为路由器仅为非物理接口主机路…

MCM制品图软件使用技巧-常见问题

常见问题 匀色效果不好 观察整体颜色是否一致&#xff1a;整体严重不一致时&#xff0c;使用参考匹配进行匀色处理&#xff1b;部分图层存在亮度色差时&#xff0c;使用人工调色对图层进行单独微调&#xff0c;比如提高亮度、对比度等等。局部纹理是否存在丢失&#xff0c;丢…

202.PyQt5_QTableWidget_项处理_表格控件

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数…

数码相框-显示JPG图片

LCD控制器会将LCD上的屏幕数据映射在相应的显存位置上。 通过libjpeg把jpg图片解压出来RGB原始数据。 libjpeg是使用c语言实现的读写jpeg文件的库。 使用libjpeg的应用程序是以"scanline"为单位进行图像处理的。 libjpeg解压图片的步骤&#xff1a; libjpeg的使…

JVM字节码与类的加载——类的加载过程详解

文章目录 1、概述2、加载(Loading)阶段2.1、加载完成的操作2.2、二进制流的获取方式2.3、类模型与Class实例的位置2.4、数组类的加载 3、链接(Linking)阶段3.1、链接阶段之验证(Verification)3.1.1、格式检查3.1.2、字节码的语义检查3.1.3、字节码验证3.1.4、符号引用验证 3.2、…

最新mysql8.3 保姆级 主从复制搭建教程

mysql 主从复制搭建 服务器配置表 机器ip操作系统主机192.168.31.25华为openEuler-22.03-LTS-SP3从机192.168.31.184华为openEuler-22.03-LTS-SP3从机192.168.31.228华为openEuler-22.03-LTS-SP3 1、在3台机器上安装独立的 mysql 1.1 创建myql文件夹用来存放mysql包 mkdir…

网络安全之权限维持那点事

权限维持 一旦黑客成功地入侵了目标系统&#xff0c;他们通常会尝试保持对系统的持久访问权&#xff0c;以便继续执行恶意活动&#xff0c;如窃取敏感数据、植入恶意软件、破坏系统功能等。 权限维持的过程可能包括以下几个方面&#xff1a; 后门植入&#xff1a;黑客可能会在…

探秘大模型:《提示工程:技巧、方法与行业应用》背后的故事

提示工程是一种新兴的利用人工智能的技术&#xff0c;它通过设计提示引导生成式 AI 模型产生预期的输出&#xff0c;来提升人与 AI 的互动质量&#xff0c;激发 AI 模型的潜力&#xff0c;提升AI的应用水平。 为了让每一个人都拥有驱动大模型的能力&#xff0c;以微软全球副总裁…

C++设计模式:原型模式(八)

1、定义与动机 定义&#xff1a;使用原型实例指定创建对象的种类&#xff0c;然后通过拷贝这些原型来创建新的对象。 动机&#xff1a; 在软件系统中&#xff0c;经常面临着“某些结构复杂的对象”的创建工作&#xff1b;由于需求的变化&#xff0c;这些对象经常面临着剧烈的变…

Window安装PostgresSQL

PostgreSQL 安装参考&#xff1a;Windows下安装PostgreSQL_window 安装postgresql-CSDN博客 安装好后打开pgAdmin4 配置Navicat连接PostgresSQL 找到安装目录文件 pg_hba.conf 修改配置增加&#xff1a; 修改前&#xff1a; # TYPE DATABASE USER ADDRES…

AI论文精读之CSPNet—— 一种加强CNN模型学习能力的主干网络

目录 一、论文摘要部分 二、提出背景 三、本文的方法 3.1 DenseNet 3.2 Cross Stage Partial DenseNet 3.3 引入 partial dense block及partial transition layer的目的 3.3.1 partial dense block 3.3.2 partial transition layer 3.4 将CSPNet应用到其他结构中 3.5 E…

100 Explosion Pack

该套装包括100种爆炸效果,包括火灾爆炸、冲击波、风暴、奇异点、特斯拉等效果。 纹理有一个透明的alpha通道,所以你可以在任何背景上使用它们! 所有效果都是高质量的,动画流畅(64帧,每帧512像素) 每个效果都使用独特的高质量精灵表。 100个不同的小精灵大小:4096x4096 …