diffusion_rs_core/lib.rs
1//! Core crate for interacting with diffusion_rs.
2//!
3//! The API is intentionally straightforward but strives to provide strong flexibility.
4//!
5//! ```rust,no_run
6//! use std::time::Instant;
7//!
8//! use diffusion_rs_core::{DiffusionGenerationParams, ModelSource, Offloading, Pipeline, TokenSource};
9//!
10//! let pipeline = Pipeline::load(
11//! ModelSource::dduf("FLUX.1-dev-Q4-bnb.dduf")?,
12//! true,
13//! TokenSource::CacheToken,
14//! None,
15//! None,
16//! )?;
17//!
18//! let start = Instant::now();
19//!
20//! let images = pipeline.forward(
21//! vec!["Draw a picture of a sunrise.".to_string()],
22//! DiffusionGenerationParams {
23//! height: 720,
24//! width: 1280,
25//! num_steps: 50,
26//! guidance_scale: 3.5,
27//! },
28//! )?;
29//!
30//! let end = Instant::now();
31//! println!("Took: {:.2}s", end.duration_since(start).as_secs_f32());
32//!
33//! images[0].save("image.png")?;
34//!
35//! # Ok::<(), anyhow::Error>(())
36//! ```
37
38mod models;
39mod pipelines;
40
41pub use diffusion_rs_common::{ModelSource, TokenSource};
42pub use pipelines::{DiffusionGenerationParams, Offloading, Pipeline};