//! `cargo run --example aa_create_buckets -q` //! //! 这段代码是一个示例程序,用于创建多个存储桶`Bucket`并将其部署到指定的 OSS 区域`Region`。代码的逻辑是 //! 循环创建存储桶,并使用并发的方式发送创建存储桶的请求,以提高效率。 //! //! 以下是代码的主要逻辑: //! //! 1. 导入所需的库和模块。 //! 2. 从环境变量中获取配置信息,并创建 OSS 客户端。 //! 3. 定义存储桶名称列表,并使用 map 方法生成包含存储桶名称的向量。 //! 4. 使用 join_all 函数和异步 map 方法并发执行创建存储桶的任务。 //! 5. 对于每个存储桶,构建创建存储桶的请求,并使用 await 关键字等待请求完成。 //! 6. 处理创建存储桶的结果,如果成功则打印成功消息,如果失败则打印错误信息。 //! //! -- ChatGPT3.5 解读 use dotenv; use futures::future::join_all; use std::sync::Arc; use xt_oss::prelude::*; #[tokio::main] async fn main() -> Result<(), Box> { dotenv::dotenv().ok(); let options = util::options_from_env(); let client = Arc::new(oss::Client::new(options)); let region = "oss-cn-shanghai".to_string(); let buckets = (10..20) .map(|i| format!("xtoss-ex{}", i)) .collect::>(); let futures = buckets.into_iter().map(|bucket| { let client = Arc::clone(&client); let region = region.clone(); async move { match client .PutBucket() .with_bucket(&bucket) .with_region(®ion) .execute() .await { Ok(Ok(_)) => println!("create {}@{} is success", &bucket, ®ion), Ok(Err(error)) => println!("{:#?}", error.content()), Err(error) => println!("reqwest error: {}", error), } } }); join_all(futures).await; Ok(()) }