本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 Rust 的 AWS SDK 的基础知识
学习使用适用于 Rust 的 AWS SDK 进行编程的基础知识,例如:Rust 编程语言基础知识、有关适用于 Rust 的 SDK crate 的信息、项目配置以及适用于 Rust 的 SDK 对 Tokio 运行时的使用。
先决条件
要使用适用于 Rust 的 AWS SDK,您必须安装 Rust 和 Cargo。
-
安装 Rust 工具链:https://www.rust-lang.org/tools/install
-
通过运行以下命令安装
cargo-component工具: cargo install cargo-component
推荐的工具:
可以在 IDE 中安装以下可选工具,以帮助完成代码和进行故障排除。
-
有关 rust-analyzer 扩展程序,请参阅 Visual Studio Code 中的 Rust
。 -
有关 Amazon Q 开发者版,请参阅在 IDE 中安装 Amazon Q 开发者版扩展程序或插件。
Rust 基础知识
以下是 Rust 编程语言的一些基础知识,了解这些基础知识会很有帮助。有关更多信息的所有参考资料均来自 Rust 编程语言
-
Cargo.toml是标准 Rust 项目配置文件,它包含该项目的依赖项和一些元数据。Rust 源文件具有.rs文件扩展名。请参阅 Hello, Cargo!。 -
您可以使用配置文件自定义
Cargo.toml,请参阅使用版本配置文件自定义构建。这些配置文件与 AWS 在共享的 AWS config文件中使用的配置文件完全无关且相互独立。 -
向项目和此文件添加库依赖项的常用方法是使用
cargo add。请参阅。cargo-add
-
-
Rust 有一个基本函数结构,如下所示。
let关键字声明了变量,可以与赋值(=)结合使用。如果您没有在let之后指定类型,编译器会推断出类型。请参阅变量和可变性。 fn main() { let w = "world"; println!("Hello {}!", w); } -
要声明变量
x具有显式类型T,Rust 使用语法x: T。请参阅数据类型。 -
struct X {}定义新类型X。方法是在自定义结构类型X上实现的。类型X的方法是用以关键字impl为前缀的实现块声明的。在实现块中,self是指调用该方法的结构的实例。请参阅关键字impl和方法语法 。 -
如果一个感叹号(“!”)跟在看似函数定义或函数调用的后面,则表示代码正在定义或调用宏。请参阅宏
。 -
在 Rust 中,不可恢复的错误由
panic!宏表示。当程序遇到panic!时,它会停止运行,打印失败消息,展开,清理堆栈,然后退出。请参阅panic!不可恢复的错误。 -
与其他编程语言不同,Rust 不支持从基类继承功能;Rust 通过
traits提供方法重载。特性在概念上可视为类似于接口。但是,特性和真实接口存在差异,并且在设计过程中通常以不同的方式使用。请参阅特性:定义共享行为。 -
多态性是指代码支持多种数据类型的功能,而无需单独为每种数据类型编写代码。Rust 通过枚举、特性和泛型支持多态性。请参阅继承作为类型系统和代码共享
。
-
-
Rust 在内存方面非常显式。智能指针“是像指针一样起作用的数据结构,但也具有额外的元数据和功能”。请参阅智能指针
。 -
类型
Cow是一个写时克隆智能指针,可帮助在必要时将内存所有权转移给调用方。请参阅。Enum std::borrow::Cow -
类型
Arc是用于计算已分配实例的原子引用计数智能指针。请参阅。Struct std::sync::Arc
-
-
适用于 Rust 的 SDK 经常使用生成器模式来构造复杂类型。
适用于 Rust 的 AWS SDK crate 基础知识
-
适用于 Rust 的 SDK 功能的主要核心 crate 是
aws-config。它之所以包含在大多数项目中,是因为它提供了从环境中读取配置的功能。$cargo add aws-config-
不要将此与名为 AWS Config 的 AWS 服务混淆。因为这是一项服务,所以它遵循 AWS 服务 crate 的标准约定,称为
aws-sdk-config。
-
-
适用于 Rust 的 SDK 库按每个 AWS 服务 分成不同的库 crate。这些 crate 可通过 https://docs.rs/
获取。 -
AWS 服务 crate 遵循
aws-sdk-的命名约定,例如[servicename]aws-sdk-s3和aws-sdk-dynamodb。
用于与 AWS 服务结合使用的项目配置
-
对于您希望应用程序使用的每个 AWS 服务,您都需要在项目中添加一个 crate。
-
添加 crate 的推荐方法是在项目目录中使用命令行运行
cargo add,例如[crateName]cargo add aws-sdk-s3。-
这将向项目
Cargo.toml中的[dependencies]下添加一行。 -
默认情况下,这会将最新版本的 crate 添加到项目中。
-
-
在源文件中,使用
use语句将 crate 中的项目放入作用域。请参阅 Rust 编程语言网站上的使用外部程序包。 -
crate 名称通常使用连字符,但是在实际使用 crate 时,连字符会被转换为下划线。例如,
aws-configcrate 在代码use语句中使用,例如:use aws_config。
-
-
配置是一个复杂的主题。配置可以直接在代码中进行,也可以在外部环境变量或配置文件中指定。有关更多信息,请参阅 在外部配置适用于 Rust 的 AWS SDK 服务客户端。
-
当 SDK 加载配置时,系统会记录无效值,而不是停止执行,因为大多数设置都有合理的默认值。要了解如何启用日志记录功能,请参阅在适用于 Rust 的 AWS SDK 中配置和使用日志记录。
-
大多数环境变量和配置文件设置会在程序启动时加载一次。在重新启动程序之前,不会看到对这些值的任何更新。
-
Tokio 运行时
-
Tokio 是适用于 Rust 的 SDK 编程语言的一个异步运行时,它执行
async任务。请参阅 tokio.rs和 docs.rs/tokio 。 -
适用于 Rust 的 SDK 需要异步运行时。建议您在项目中添加以下 crate:
$cargo add tokio --features=full -
tokio::main属性宏为程序创建一个异步主入口点。要使用此宏,请将其添加到main方法前面的行中,如下所示:#[tokio::main] async fn main() -> Result<(), Error> {