当前位置:   article > 正文

rust语言代码_开始使用Rust,这是获得更安全代码的语言

rust cctools

rust语言代码

在过去的几年中,Rust从在Mozilla员工的实验室中培养出的好奇心,变成了编写下一代本机应用程序和裸机解决方案的有力竞争者。 但是这些进步来自Rust提供了自己的工具链和组件管理系统,以及它自己的功能和怪癖。

本文介绍了在Rust中设置工作环境,配置IDE以及充分利用Rust为应用程序开发提供的工具集的基础知识。

[ 什么是Rust? 安全,快速,轻松地进行软件开发的方式 | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]

相关视频:使用Rust开发更安全的软件

快速开始使用旨在创建快速的系统级软件的Rust新手。 这个两分钟的动画讲解者展示了Rust如何绕过令人烦恼的内存和管理编程问题。

Rust开发环境的基础

Rust的工具链主要由Rust编译器rustc以及用于管理Rust安装的工具组成。 由于Rust正在不断开发中,因此Rust工具链的设计使其易于更新。

通常通过多个渠道提供软件项目,以分离代码的稳定版本和beta版本。 Rust的工具链以相同的方式工作,为其工具链提供了三个渠道:

  • 稳定:要点发布,每六周左右出现一次。
  • Beta:下一个要点发布的候选人,出现的频率更高。
  • 每晚:最直接的构建,可以使用最先进的功能,但不能保证其稳定性。

正如开发人员Karol Kuczmarski指出的那样 ,最好将每晚的Rust频道视为自己的语言。 某些Rust功能(例如编译为WebAssembly)仅在夜间通道中可用,并且只能由特殊的编译器指令激活。 换句话说,它们甚至不会在beta或稳定版上进行编译。 这是设计使然,因为无法保证夜间功能将在其他任何地方得到支持。

简而言之:

  1. 使用稳定的实际生产工作。
  2. 使用Beta测试即将推出的版本的当前软件,以查看升级是否会中断。
  3. 每晚使用具有Rust最新功能的沙盒实验。

选择要在Rust中开发的平台

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上支持两个工具链:

  • 本机Microsoft Visual C(MSVC)ABI
  • GCC链接器使用的Gnu ABI。

由于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编译器。
  • 货物,Rust的包装和工作区经理。

默认情况下, rustup从稳定通道安装Rust。 如果要使用beta或夜间版本,则必须安装这些通道(例如rustup install nightly ), 并将 Rust设置为默认使用它们( rustup default nightly )。 您还可以在编译Rust应用程序时手动指定要使用的通道 ,因此不必每次在项目之间移动时都设置和重置默认值。

您还可以使用rustup安装和维护自定义工具链。 这些通常由非官方的第三方Rust版本用于不受支持的平台,因为这些平台通常需要自己的链接器或其他特定于平台的工具。

锈更新 IDG

rustup会将Rust工具链的所有部分更新为最新版本。 在这里,夜间工具链(具有尖端的语言和可能不稳定的语言组件)与稳定版本分开进行更新。

为IDE配置Rust

尽管Rust是一种相对较新的语言,但它已经获得了许多常见IDE的强大支持。 开发人员Manuel Hoffman在areweideyet.com网站上维护着一个项目来跟踪这种支持的状态。

通过称为Rust Language Server(RLS)的功能,使Rust能够与IDE良好配合是其开发团队的一个明确目标。 RLS从Rust自己的编译器(而不是第三方解析器)提供有关代码的实时反馈。

锈langserver IDG

Rust的Language Server项目允许将实时反馈从Rust编译器提供给您正在使用的代码的IDE。 此处显示的Visual Studio Code具有对Rust语言服务器可用的一些最完整的支持。

以下是支持Rust的IDE:

创建您的第一个Rust项目

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/debugtarget/release子目录中,具体取决于您使用的编译配置文件。

锈你好世界 IDG

编译Rust项目时,将获取并自动编译其所有依赖项。 对于出现警告或错误的所有内容,都会显示详细的逐行反馈。

使用Rust包,也称为“ crates”

程序包管理是任何现代编程环境的关键部分。 为此,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安装中,您也可以将Rust应用程序编译到目标操作系统和环境,该目标操作系统和环境与您要编译的目标操作系统和环境不同。

这种交叉编译需要在您使用的平台上与目标平台匹配的工具链。 有时,就像与Windows上的Linux进行交叉编译一样,反之亦然,这涉及到拥有GCC链接程序。 但是有时候,它更复杂。 例如,要交叉编译到MacOS ,您需要Xcode IDE库才能完成工作-cctools(Apple等效于binutils)和MacOS SDK。

第三方工具提供了解决这些困难的一些方法:

  • 这样的工具之一就是Trust ,它是Travis CI和AppVeyor模板,可以自动发布Rust项目的二进制发行版。 尽管它需要使用Travis CI和AppVeyor服务,并且可以将您的项目托管在GitHub上,但是它可以为Linux,Windows和MacOS构建。
  • Cross的另一个项目直接在64位x86 Linux主机上运行,​​但是提供了其创建者所描述的“零设置”交叉编译功能,可以跨多种目标进行编译,包括64位Windows和MIPS。

与其他Rust项目一起工作

与Rust站在一起的一个好方法是检出第三方项目并在本地进行。 最简单的方法就是克隆Rust项目存储库的Git。 只要Cargo.toml库的根目录中有Cargo.toml文件,Cargo就会识别它。

Cargo不能做的一件事,至少到目前为止还不能,就是自己对箱子进行本地复制。 Git可以做到这一点,并且大多数对Rust进行认真工作的人都应该安装Git。 但是您可以直接通过第三方Cargo子命令, cargo-clonecargo-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语言代码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/533444
推荐阅读
相关标签
  

闽ICP备14008679号