的基础知识 适用于 Rust 的 AWS SDK - 适用于 Rust 的 AWS SDK

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

的基础知识 适用于 Rust 的 AWS SDK

学习编程基础知识 适用于 Rust 的 AWS SDK,例如:Rust 编程语言基础知识、有关 Rust 板条箱的 SDK 的信息、项目配置以及适用于 Rust 使用 Tokio 运行时的 SDK。

先决条件

要使用,必须安装 Rust 和 Cargo。 适用于 Rust 的 AWS SDK

可以在 IDE 中安装以下可选工具,以帮助完成代码和进行故障排除。

Rust 基础知识

以下是 Rust 编程语言的一些基础知识,了解这些基础知识会很有帮助。有关更多信息的所有参考资料均来自 Rust 编程语言

  • Cargo.toml 是标准 Rust 项目配置文件,它包含该项目的依赖项和一些元数据。Rust 源文件具有 .rs 文件扩展名。请参阅 Hello, Cargo!

    • 您可以使用配置文件自定义 Cargo.toml,请参阅使用版本配置文件自定义构建。这些配置文件完全无关,与共享 AWS config文件中 AWS配置文件的使用无关。

    • 向项目和此文件添加库依赖项的常用方法是使用 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是一个 clone-on-write智能指针,可帮助在必要时将内存所有权转移给调用者。请参阅Enum std::borrow::Cow

    • 类型 Arc 是用于计算已分配实例的原子引用计数智能指针。请参阅Struct std::sync::Arc

  • 适用于 Rust 的 SDK 经常使用生成器模式来构造复杂类型。

适用于 Rust 的 AWS SDK 箱子基础知识

  • 适用于 Rust 的 SDK 功能的主要核心 crate 是 aws-config。它之所以包含在大多数项目中,是因为它提供了从环境中读取配置的功能。

    $ cargo add aws-config
    • 不要将其与所谓 AWS 服务 AWS Config的混淆。由于这是一项服务,因此它遵循 AWS 服务 板条箱的标准惯例并被调aws-sdk-config用。

  • 适用于 Rust 的 SDK 库被每个 AWS 服务库分成不同的库箱。这些 crate 可通过 https://docs.rs/ 获取。

  • AWS 服务 板条箱遵循的命名惯例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-config crate 在代码 use 语句中使用,例如:use aws_config

  • 配置是一个复杂的主题。配置可以直接在代码中进行,也可以在外部环境变量或配置文件中指定。有关更多信息,请参阅 在外部配置适用于 Rust 的 AWS SDK 服务客户端

    • 当 SDK 加载配置时,系统会记录无效值,而不是停止执行,因为大多数设置都有合理的默认值。要了解如何启用日志记录功能,请参阅在适用于 Rust 的 AWS SDK 中配置和使用日志记录

    • 大多数环境变量和配置文件设置会在程序启动时加载一次。在重新启动程序之前,不会看到对这些值的任何更新。

Tokio 运行时

  • Tokio 是适用于 Rust 的 SDK 编程语言的一个异步运行时,它执行 async 任务。请参阅 tokio.rsdocs.rs/tokio

  • 适用于 Rust 的 SDK 需要异步运行时。建议您在项目中添加以下 crate:

    $ cargo add tokio --features=full
  • tokio::main 属性宏为程序创建一个异步主入口点。要使用此宏,请将其添加到 main 方法前面的行中,如下所示:

    #[tokio::main] async fn main() -> Result<(), Error> {