kiroshi 0.1.0

An opinionated image diffusion server for Rust
Documentation
use std::fmt;

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
pub struct Seed(u64);

impl Seed {
    pub fn random() -> Self {
        Self(rand::random())
    }

    pub fn value(self) -> u64 {
        self.0
    }

    pub fn rng(self) -> impl rand::Rng {
        use rand::SeedableRng;

        rand::rngs::StdRng::seed_from_u64(self.0)
    }
}

impl fmt::Display for Seed {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "{seed}", seed = self.0)
    }
}

impl From<u64> for Seed {
    fn from(value: u64) -> Self {
        Self(value)
    }
}