博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rust编程语言_Mozilla的Rust编程语言处于关键阶段
阅读量:2538 次
发布时间:2019-05-11

本文共 2502 字,大约阅读时间需要 8 分钟。

rust编程语言

在今年的 ,Steve Klabnik谈到了Mozilla的 。 Klabnik以前撰写了Rust入门教程,标题为 ,这个演讲也有类似目的。 但是,这次演讲不是针对Ruby,而是针对一般程序员。 因此,演讲的主题是: $ LANGUAGE-ists的Rust

Klabnik的演讲包括三个部分。 首先,他介绍了Rust语言的起源以及有关该语言的发展方向的一些信息。 第二部分介绍了代码示例。 示例从无所不在的“ Hello World”到更复杂的示例,这些示例突出了一些使Rust与其他语言区分开的功能。 最后一部分提供了用于学习有关Rust的更多资源。

下面,我将介绍Steve Klabnik演讲中的一些要点,但我强烈建议或 。 我从他的演讲中学到了很多东西,我想你也会。

什么是锈?

Rust是一种系统语言,可以替代C ++。 从理论上讲,您可以将Rust用于要使用C ++的任何编程项目。 Rust相对于C ++的优势在于,Rust从头开始设计为“安全,并发和快速”。

Rust最初是在Mozilla工作的Graydon Hoare的个人项目。 当Mozilla想要成立研究与开发部门时,Rust成为其第一个项目。 Mozilla写了很多C ++代码,并且不得不处理C ++的缺点。 例如,在上一届竞赛中Firefox中发现的所有三个漏洞都是由于C ++(例如,指针管理不当)引起的。 在Rust中,这类编程错误甚至都不会编译。

Hoare不再领导Rust的发展。 他已经从事其他项目。 Rust已达到足够成熟的开发阶段,因此即使没有原始开发人员,该项目也可以继续进行。 这并不意味着Rust是一个完全成熟的项目。 当前版本是0.10版本,新版本确实破坏了兼容性。 早期版本中的代码示例和文档可能不适用于最新版本,因此新用户可能会感到困惑。 1.0版即将推出,该版本将稳定所有内容。

Rust处于生命周期的关键时刻。 它还不完全成熟,因此可能会让某些人推迟使用它,但是它需要人们在1.0版本之前使用该语言进行改进。 该项目需要来自不同角度的人们的广泛关注,以确保Rust 1.0发行版尽可能的好。

代码示例

Rust中的Hello World:

use std::io::println;fn main() {    println("Hello, world");}

这是用Rust编写的标准“ Hello World”应用程序。 对于具有任何C风格,花括号语言的经验的人来说,它应该看起来足够熟悉。 第一行导入println函数。 Main是用fn而不是intpublic static void等声明的。 Rust与C / C ++ / C#/ Java程序员习惯使用的稍有不同,但足够紧密,因此并不完全陌生。

段故障:

int main(void){    char *s = "hello world";    *s = 'H';    }

此C ++代码将带有警告编译,但在运行时将出现段错误。 Rust旨在阻止这种情况的发生,如以下示例所示。

fn main() {    let s = &"hello world";    *s = "H";}segfault.rs:3:4 3:6 error: type &str cannot be dereferencedsefault.rs:3    *s = "H";                ^~error: aborting due to previous errortask 'rustc' failed at 'explicit failure', ...

Rust不会编译,而是打印出以上错误消息。 这是Rust的优势之一。 它对安全性的关注意味着它旨在防止像上面的C ++示例中的错误那样将其转化为编译后的代码。

一个更复杂的示例:

fn main() {    let nums = [1, 2];    let noms = ["Tim", "Eston", "Aaron", "Ben"];     let mut odds = nums.iter().map(|&x| x * 2 - 1);     for num in odds {        spawn(proc() {            println!("{:s} says hello from a lightweight            thread!", noms[num]);        });    }}

这段代码展示了Rust的几个功能。 Rust使用let关键字定义变量。 代码的第二和第三行创建一个整数向量( nums )和一个字符串向量( noms )。 Rust支持类型推断,因此没有必要明确声明向量包含整数或字符串。 下一行突出显示了默认情况下Rust中的变量不可更改的事实。 如果要使变量可变,请使用mut关键字。 for循环看起来就像您在更现代的语言(如Ruby或Python)中看到的一样,但是它可以编译为与传统C ++ for循环相同的机器代码。 代码的spawn(proc())演示了Rust如何创建一个可以在其中运行函数的线程。 最后, println! 一行显示Rust如何处理替换。 在示例中, {:s}将被noms[num]的值替换。

我所介绍的示例仅涉及表面。 Klabnik的演示包括Rust代码的许多其他示例。 如我上面所述,他的演讲非常值得一看。 您将学到很多东西。 如果要尝试演示中的示例,只需确保下载了Rust 0.10。 当前的夜间版本已更改了某些内容,因此某些示例将不起作用。

Rust的资源

在结束他的演讲时,Klabnik建议使用以下资源来了解有关Rust的更多信息。 但是,他的确警告说Rust的官方教程“很糟糕”,并且正在被重写。

教程:

讨论:

  • #rust在irc.mozilla.org上

查看并参与其中。

翻译自:

rust编程语言

转载地址:http://jxpzd.baihongyu.com/

你可能感兴趣的文章
mysql 日期时间运算函数(转)
查看>>
初识前端作业1
查看>>
为啥程序会有bug?
查看>>
跨域技术
查看>>
JS里的居民们7-对象和数组转换
查看>>
计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值.
查看>>
python初体验
查看>>
配置vue,vue脚手架的应用(老版本)
查看>>
linux下防火墙iptables原理及使用
查看>>
经典C面试真题精讲
查看>>
Remove Duplicates from Sorted List解题报告
查看>>
ffmpeg格式转换命令
查看>>
万方数据知识平台 TFHpple +Xpath解析
查看>>
Hive实现oracle的Minus函数
查看>>
秒杀多线程第四篇 一个经典的多线程同步问题
查看>>
RocketMQ配置
查看>>
vs code调试console程序报错--preLaunchTask“build”
查看>>
蚂蚁金服井贤栋:用技术联手金融机构,形成服务小微的生态合力
查看>>
手机通话记录统计分析
查看>>
富文本编辑器比较
查看>>