赞
踩
rust语言代码
在过去的几年中,Rust从在Mozilla员工的实验室中培养出的好奇心,变成了编写下一代本机应用程序和裸机解决方案的有力竞争者。 但是这些进步来自Rust提供了自己的工具链和组件管理系统,以及它自己的功能和怪癖。
本文介绍了在Rust中设置工作环境,配置IDE以及充分利用Rust为应用程序开发提供的工具集的基础知识。
[ 什么是Rust? 安全,快速,轻松地进行软件开发的方式 。 | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]
快速开始使用旨在创建快速的系统级软件的Rust新手。 这个两分钟的动画讲解者展示了Rust如何绕过令人烦恼的内存和管理编程问题。
Rust的工具链主要由Rust编译器rustc
以及用于管理Rust安装的工具组成。 由于Rust正在不断开发中,因此Rust工具链的设计使其易于更新。
通常通过多个渠道提供软件项目,以分离代码的稳定版本和beta版本。 Rust的工具链以相同的方式工作,为其工具链提供了三个渠道:
正如开发人员Karol Kuczmarski指出的那样 ,最好将每晚的Rust频道视为自己的语言。 某些Rust功能(例如编译为WebAssembly)仅在夜间通道中可用,并且只能由特殊的编译器指令激活。 换句话说,它们甚至不会在beta或稳定版上进行编译。 这是设计使然,因为无法保证夜间功能将在其他任何地方得到支持。
简而言之:
Rust 支持 32位和64位版本的所有三个主要平台( Windows,Linux和MacOS),每个版本都有官方二进制文件。 其他许多平台也都有官方二进制文件,但它们没有相同级别的自动测试范围。 这些二等平台包括适用于iOS,Android和Linux的ARMv6和ARMv7。 MIPS Linux和MIPS64 Linux; x86 iOS,Windows和Linux的32位版本; 和WebAssembly 。 其他平台,例如Windows XP或试验性的HaikuOS,都通过非官方版本得到支持。
Rust的开发团队表示,尽可能广泛地移植不是Rust的使命之一。 例如,尽管Rust在许多ARM体系结构上都可用,但是不能保证在低端硬件平台上将正式支持Rust。
也就是说,应该为大多数常见的主流用例(即32位和64位Windows,Linux和MacOS)提供受支持的Rust构建。
如果您打算在Windows上的Rust中进行开发 ,请牢记工具链。 Rust在Windows上支持两个工具链:
由于Windows内置的几乎所有C / C ++软件仍然使用MSVC,因此您将希望在绝大多数时间使用MSVC工具链。 如果您需要GCC,则最有可能是要与Windows中使用GCC构建的第三方库进行互操作。
好消息是,Rust的工具链管理系统使您可以同时安装MSVC 和 GCC工具链,并且可以逐个项目地在它们之间进行切换。
Rust的编译目标之一是WebAssembly,这意味着您可以用Rust编写并部署到Web浏览器。 WebAssembly本身的边缘仍然很粗糙,Rust对它的支持也是如此。 但是,如果您有雄心壮志并且想弄乱自己的手,请阅读 Rust和WebAssembly人士编写的这本书 ,其中详细介绍了将WebAssembly编译为Rust的过程。
rustup
开始您的Rust设置 Rust提供了称为rustup
多合一安装程序和工具链维护系统。 下载rustup
并运行它; 它将获取Rust工具链的最新版本并为您安装它们。
rustup
维护的最关键的工具是:
rustup
本身。 每当发布新版本的rustup
或其他工具时,您都可以运行rustup update
并自动rustup update
所有内容。 rustc
,Rust编译器。 默认情况下, rustup
从稳定通道安装Rust。 如果要使用beta或夜间版本,则必须安装这些通道(例如rustup install nightly
), 并将 Rust设置为默认使用它们( rustup default nightly
)。 您还可以在编译Rust应用程序时手动指定要使用的通道 ,因此不必每次在项目之间移动时都设置和重置默认值。
您还可以使用rustup
安装和维护自定义工具链。 这些通常由非官方的第三方Rust版本用于不受支持的平台,因为这些平台通常需要自己的链接器或其他特定于平台的工具。
尽管Rust是一种相对较新的语言,但它已经获得了许多常见IDE的强大支持。 开发人员Manuel Hoffman在areweideyet.com网站上维护着一个项目来跟踪这种支持的状态。
通过称为Rust Language Server(RLS)的功能,使Rust能够与IDE良好配合是其开发团队的一个明确目标。 RLS从Rust自己的编译器(而不是第三方解析器)提供有关代码的实时反馈。
以下是支持Rust的IDE:
Rust项目旨在具有一致的目录结构,其中代码和项目元数据以某种方式存储在其中。 代码存储在src
子目录中,有关项目的详细信息存储在项目根目录中的两个文件中: Cargo.toml
(项目的基本信息)和Cargo.lock
(自动生成的依赖项列表)。 您可以手动创建该目录结构和元数据,但是仅使用Rust自己的工具来完成这项工作就容易了。
提示: Rust的示例在线学习指南Rust提供了交互式代码示例,可以在浏览器中直接对其进行编辑和运行。 它涉及几乎所有主要的Rust概念,尽管在讨论中相对较晚地引入了一些更关键的概念,例如借用和生存期。
Rust的Cargo工具可管理Rust项目以及它们使用的库或“库”。 要在其自己的目录中启动名为my_project
的新Rust项目,请输入cargo new my_project
。 (对于使用.Net Core的 C#开发人员,请考虑dotnet new
命令。)新项目与该名称一起出现在带有该名称的子目录中,以及基本项目清单( Cargo.toml
文件)和项目源代码的存根。 ,位于src
子目录中。
创建新项目时,将在项目的src
目录中自动创建一个main.rs
文件。 该文件包含一个基本的“ hello world”应用程序,因此您可以通过编译和运行它来立即测试Rust工具链。
“ hello world”应用程序的源代码:
fn main() {
println!(“Hello World!”);
}
要构建并运行它,请输入项目目录的根目录,然后键入cargo run
。 请注意,默认情况下,Cargo以调试模式构建项目。 要以发布模式cargo run --release
,请使用cargo run --release
。 二进制文件内置在项目的target/debug
或target/release
子目录中,具体取决于您使用的编译配置文件。
程序包管理是任何现代编程环境的关键部分。 为此,Rust提供了“ crates”,它们是打包成与Rust工具一起分发的第三方库。 您可以在Rust官方包注册表Crates.io中找到板条箱。
如果您的项目依赖于特定的板条箱,则需要通过编辑项目的Cargo.toml
文件来指定该板条箱。 执行此操作的标准方法是手动操作-即,直接使用文本编辑器直接编辑Cargo.toml
。 下次重建项目时,Rust自动获取任何需要的依赖项。
提示:尽管这两个工具是非官方的第三方项目,但它们可以通过命令行更新cargo-edit-locally
cargo-edit
工具和cargo-edit-locally
两种工具。
当您构建依赖于外部包装箱的Rust项目时,默认情况下,Cargo在Crates.io上查找这些包装箱; 您无需手动获取它们。 如果您需要不在注册表中托管的板条箱,例如私有存储库中的某些板条,您还可以通过URL而不是板条箱名称来引用项目中的板条箱。
请注意,某些包装箱只会在Rust的夜间频道上安装和构建,因为它们使用其他频道中没有的实验功能。 如果您在发布频道上并尝试安装这样的板条箱,则在编译本身失败之前,您不会收到任何警告。 板条箱文档通常提到是否需要夜间频道,因此在添加之前请仔细阅读,更不用说编译了。
板条箱可以包含二进制文件。 有些是在Rust开发中使用的命令行工具。 其他是通用工具(例如ripgrep
)。 要安装这些板条箱之一,只需键入cargo install <crate name>
。 这不是分发用Rust创建的二进制文件的唯一方法,但是它是Rust开发人员在涉及Rust工具的工作流中获取它们的便捷方法。
因为Rust支持多个工具链,所以即使在相同的Rust安装中,您也可以将Rust应用程序编译到目标操作系统和环境,该目标操作系统和环境与您要编译的目标操作系统和环境不同。
这种交叉编译需要在您使用的平台上与目标平台匹配的工具链。 有时,就像与Windows上的Linux进行交叉编译一样,反之亦然,这涉及到拥有GCC链接程序。 但是有时候,它更复杂。 例如,要交叉编译到MacOS ,您需要Xcode IDE库才能完成工作-cctools(Apple等效于binutils)和MacOS SDK。
第三方工具提供了解决这些困难的一些方法:
与Rust站在一起的一个好方法是检出第三方项目并在本地进行。 最简单的方法就是克隆Rust项目存储库的Git。 只要Cargo.toml
库的根目录中有Cargo.toml
文件,Cargo就会识别它。
Cargo不能做的一件事,至少到目前为止还不能,就是自己对箱子进行本地复制。 Git可以做到这一点,并且大多数对Rust进行认真工作的人都应该安装Git。 但是您可以直接通过第三方Cargo子命令, cargo-clone
和cargo-clone-crate
将功能添加到Cargo中。
在哪里寻找可以修补和学习的项目? 首先,请转到GitHub上的Awesome Rust存储库。 其中一个是Servo Web浏览器引擎项目,它是Rust最初设计的实际应用程序之一。
许多其他项目都有其自身的优点,不仅可以使Rust脱颖而出,也可以因为它们是更大工作的组成部分。 其中包括Trust-DNS (DNS服务器和客户端), Alacritty (GPU增强的终端仿真器)和MaidSafe分散式数据平台 。 (有关娱乐,请查看类似于Rogue的游戏Magog 。)
Awesome Rust还列出了许多最好的板条箱和第三方工具,供您学习和使用。
如果您正在寻找一个项目来作为一个成熟的开发人员参与,请查看“ 有用的Rust项目” 。 那里列出的许多项目都需要开发人员或文档编制者,或者正在寻找新的所有权。
翻译自: https://www.infoworld.com/article/3294980/get-started-with-rust-the-language-for-safer-code.html
rust语言代码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。