Rust是一种相对较新的编程语言,受到各行各业的程序员的欢迎。尽管如此,它仍然是一种建立在之前一切之上的语言。毕竟,Rust不是一天建成的,所以尽管Rust中的一些概念可能看起来与你从Python、Java、C++等编程语言中学到的东西大相径庭,但它们都是基于同样的基础,也就是你一直都有CPU和它交互的NUMA(NonUniformMemoryAccess)架构(不管你知不知道),所以Rust中的一些新特性感觉有些熟悉。现在,我不是职业程序员。我很不耐烦,但我有点强迫症。当我需要完成某件事时,如果某种语言不能帮助我相对快速地获得我想要的结果,我很少会受到启发去使用它。Rust试图平衡两个矛盾:现代计算机对安全和结构化代码的需求,以及现代程序员以更少的努力更高效地编写代码的愿望。安装Rusttrust-lang.org网站有大量关于如何安装Rust的文档,但通常,它就像下载sh.rustup.rs脚本并运行它一样简单。$curl--proto'=https'--tlsv1.2-sSfhttps://sh.rustup.rs$lesssh.rustup.sh$sh./sh.rustup.rs没有类Rust没有类并且确实不使用class关键字。Rust确实有一个结构数据类型,但它的作用是充当一种数据集合的模板。因此,不用创建类来表示虚拟对象,而是可以使用结构:structPenguin{genus:String,species:String,extinct:bool,classified:u64,}你可以像使用类一样使用它。例如,定义企鹅结构时,您可以创建它的一个实例并与该实例交互:structPenguin{genus:String,species:String,extinct:bool,classified:u64,}fnmain(){letp=Penguin{属:“Pygoscelis”.to_owned(),物种:“Radeli?”.to_owned(),灭绝:false,分类:1841};println!("物种:{}",p.species);println!("属:{}",p.genus);println!("分类在{}",p.classified);ifp.extinct==true{println!("遗憾的是这只企鹅已经灭绝了。");}}将impl数据类型与struct数据类型相结合,您可以实现包含函数的结构,并且可以添加继承和其他类似类的功能。函数Rust中的函数与其他语言中的函数非常相似。每个函数代表一组严格的任务,您可以在需要时调用这些任务。主函数名必须是main。函数使用fn关键字声明,后跟函数名称和函数接受的任何参数。fnfoo(){letn=8;println!("Eightiswrittenas{}",n);}通过参数将信息从一个函数传递到另一个函数。比如我创建了一个企鹅类(struct),我有一个企鹅实例p,指定目标函数的参数为??企鹅类型,就可以将p的属性从一个函数传递给另一个函数。fnmain(){letp=Penguin{属:“Pygoscelis”.to_owned(),种:“Radeli?”.to_owned(),灭绝:假,分类:1841};打印机(p);}fn打印机(p:Penguin){println!("物种:{}",p.species);println!("Genus:{}",p.genus);println!("Classifiedin{}",p.classified);ifp.extinct==true{println!("很遗憾,这只企鹅已经灭绝了。");}}变量Rust默认创建不可变变量。这意味着您创建的变量以后无法更改。这段代码虽然看起来不错,但无法编译:fnmain(){letn=6;让n=5;但是你可以使用关键字mut声明一个可变变量,所以下面的代码可以编译成功:fnmain(){letmutn=6;println!("值为{}",n);n=5;println!("Valueis{}",n);}编译Rust编译器,至少就其错误消息而言,是最好的可用编译器之一。当你在Rust中犯错时,编译器会诚实地告诉你哪里做错了。事实上,我仅通过从编译器错误消息中学习就了解了Rust的许多细微差别(据我了解Rust的任何细微差别)。尽管有时错误信息太模糊以至于无法理解原因,但互联网搜索几乎总能找到解释。启动Rust程序的最简单方法是使用cargo,Rust的包管理和构建系统。$mkdirmyproject$cdmyproject$cargoinit上面的命令为项目创建了基本的基础设施,最值得注意的是src子目录中的main.rs文件。打开此文件并粘贴我为本文生成的示例代码:structPenguin{genus:String,species:String,extinct:bool,classified:u64,}fnmain(){letp=Penguin{genus:"Pygoscelis".to_owned(),物种:"Radeli?".to_owned(),灭绝:false,分类:1841};printer(p);foo();}fnprinter(p:Penguin){println!("物种:{}",p.species);println!("属:{}",p.genus);println!("分类于{}",p.classified);ifp.extinct==true{println!("很遗憾这只企鹅已经灭绝了。");}}fnfoo(){letmutn=6;println!("值为{}",n);n=8;println!("Eightiswrittenas{}",n);}使用cargobuild命令编译:$cargobuild执行目标子目录下的二进制程序,或者直接运行cargorun命令运行你的project:$cargorunSpecies:Radeli?Genus:PygoscelisClassifiedin1841Valueis6Eightiswrittenas8Crates任何语言的大部分便利性都来自于它的库或模块。在Rust中,分发和跟踪的库称为“板条箱”。crates.io是一个很棒的社区crate注册表。将箱子添加到Rust项目首先要将箱子添加到Cargo.toml文件。例如,为了安装随机数功能,我使用了一个名为rand的crate,使用*作为通配符以确保在编译时获得最新版本:[package]name="myproject"version="0.1.0"authors=["Seth
