stable_diffusion/
stable_diffusion.rs

1use fal_rust::{
2    client::{ClientCredentials, FalClient},
3    utils::download_image,
4};
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Serialize, Deserialize)]
8struct ImageResult {
9    url: String,
10}
11
12#[derive(Debug, Serialize, Deserialize)]
13struct Output {
14    images: Vec<ImageResult>,
15}
16
17#[tokio::main]
18async fn main() {
19    let client = FalClient::new(ClientCredentials::from_env());
20
21    let res = client
22        .run(
23            "fal-ai/stable-cascade",
24            serde_json::json!({
25                "prompt": "A large waterfall in the middle of a volcano, surrounded by lush greenery and children's playground equipment.",
26            }),
27        )
28        .await
29        .unwrap();
30
31    let output: Output = res.json::<Output>().await.unwrap();
32
33    let url = output.images[0].url.clone();
34    let filename = url.split('/').last().unwrap();
35
36    download_image(&url, format!("{}/{}", "images", filename).as_str())
37        .await
38        .unwrap();
39}