diffuser_scheduler/types/
mod.rs

1use std::fmt::{Debug, Display, Formatter};
2
3use serde::{Deserialize, Serialize};
4
5pub use self::{ddim::DDIMScheduler, euler::EulerDiscreteScheduler};
6
7mod ddim;
8mod der;
9mod euler;
10
11#[derive(Clone, Serialize)]
12#[serde(tag = "type")]
13pub enum DiffuserScheduler {
14    #[doc = include_str!("euler/Readme.md")]
15    Euler(Box<EulerDiscreteScheduler>),
16    #[doc = include_str!("ddim/Readme.md")]
17    DDIM(Box<DDIMScheduler>),
18}
19
20impl Default for DiffuserScheduler {
21    fn default() -> Self {
22        Self::DDIM(Box::new(DDIMScheduler::default()))
23    }
24}
25
26impl Debug for DiffuserScheduler {
27    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
28        match self {
29            DiffuserScheduler::Euler(v) => Debug::fmt(v, f),
30            DiffuserScheduler::DDIM(v) => Debug::fmt(v, f),
31        }
32    }
33}
34
35impl Display for DiffuserScheduler {
36    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
37        match self {
38            DiffuserScheduler::Euler(v) => Debug::fmt(v, f),
39            DiffuserScheduler::DDIM(v) => Debug::fmt(v, f),
40        }
41    }
42}