diffuser_scheduler/types/
mod.rs1use 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}