liboxen 0.48.3

Oxen is a fast, unstructured data version control, to help version large machine learning datasets written in Rust.
Documentation
use serde::{Deserialize, Serialize};
use utoipa::{IntoParams, ToSchema};

#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, ToSchema)]
pub enum ImgColorSpace {
    // 8-bit
    RGB,
    RGBA,
    Grayscale,
    GrayscaleAlpha,

    // 16-bit
    Rgb16,
    Rgba16,
    Grayscale16,
    GrayscaleAlpha16,

    // 32-bit float
    Rgb32F,
    Rgba32F,

    Unknown,
}

#[derive(Deserialize, Serialize, Debug, Clone, ToSchema)]
pub struct MetadataImage {
    pub image: MetadataImageImpl,
}

#[derive(Deserialize, Serialize, Debug, Clone, ToSchema)]
pub struct MetadataImageImpl {
    pub width: u32,
    pub height: u32,
    pub color_space: Option<ImgColorSpace>,
}

#[derive(Deserialize, Debug, IntoParams, ToSchema)]
pub struct ImgResize {
    pub width: Option<u32>,
    pub height: Option<u32>,
}

impl MetadataImage {
    pub fn new(width: u32, height: u32) -> Self {
        Self {
            image: MetadataImageImpl {
                width,
                height,
                color_space: None,
            },
        }
    }
}

impl std::fmt::Display for MetadataImage {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        write!(
            f,
            "MetadataImage({}x{})",
            self.image.width, self.image.height
        )
    }
}