Rust
Please Read First
Before processing, make sure to learn about Pulumi and read Pulumi Gestalt overview
TL/DR
Example project is available at pulumi-gestalt-example
Requirements
- Rust
- Pulumi Gestalt Rust language plugin:
pulumi plugin install language rust "<PULUMI_GESTALT_VERSION>" --server github://api.github.com/andrzejressel/pulumi-gestalt
Project setup
Add dependencies
Cargo.toml
[dependencies]
pulumi_gestalt_rust = { version = "=<PULUMI_GESTALT_VERSION>" }
anyhow = "1.0.95"
bon = "3.3.1"
[build-dependencies]
pulumi_gestalt_build = { version = "=<PULUMI_GESTALT_VERSION>" }
Generate provider code
build.rs
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
pulumi_gestalt_build::generate("random", "4.15.0")?;
Ok(())
}
Include provider code
src/random.rs
pulumi_gestalt_rust::include_provider!("random");
Use provider
src/main.rs
mod random;
use anyhow::Result;
use random::random_string;
use random::random_string::RandomStringArgs;
use pulumi_gestalt_rust::*;
fn main() {
run(pulumi_main).unwrap();
}
fn pulumi_main(context: &Context) -> Result<()> {
let length: Output<i32> = context.new_output(&4);
let random_string_1 = random_string::create(
context,
"test_1",
RandomStringArgs::builder().length(length).build_struct(),
);
let new_length = random_string_1.result.map(|s| s.len() as i32);
let random_string_2 = random_string::create(
context,
"test_2",
RandomStringArgs::builder()
.length(new_length)
.build_struct(),
);
let random_string_3 = random_string::create(
context,
"test_3",
RandomStringArgs::builder()
.length(random_string_2.length.map(|i| i * 2))
.build_struct(),
);
context.add_export("result", &random_string_1.result);
context.add_export("number_1", &random_string_1.length);
context.add_export("number_2", &random_string_2.length);
context.add_export("number_3", &random_string_3.length);
Ok(())
}
Add Pulumi.yaml
Pulumi.yaml
name: Pulumi-Gestalt-Example
runtime: rust
You can now setup Pulumi stack using pulumi stack and run program using pulumi up