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};