exolvl 0.8.0

A library for reading and writing Exoracer level files.
Documentation
use crate::types::{
    action_type::ActionType,
    author_replay::AuthorReplay,
    brush::{Brush, BrushGrid, BrushObject},
    color::Color,
    dynamic_type::DynamicType,
    exolvl::Exolvl,
    function_call::{CallParameter, FunctionCall},
    image::Image,
    layer::Layer,
    level_data::LevelData,
    local_level::LocalLevel,
    novascript::{
        action::Action, activator::Activator, nova_value::NovaValue, parameter::Parameter,
        static_type::StaticType, variable::Variable, NovaScript,
    },
    object::Object,
    object_property::ObjectProperty,
    old_script::{OldAction, OldActionProperty, OldActionType, Script},
    pattern::Pattern,
    prefab::Prefab,
    varint::Varint,
    vec2::Vec2,
};
use chrono::{DateTime, Utc};
#[cfg(feature = "image")]
use image::DynamicImage;
use uuid::Uuid;

pub trait Sealed {}

macro_rules! impl_sealed {
    ($($ty:ty),*$(,)?) => {
        $(
            impl Sealed for $ty {}
        )*
    };
}

impl_sealed!(
    Varint,
    String,
    u32,
    i32,
    i64,
    f32,
    bool,
    u8,
    Exolvl,
    LocalLevel,
    DateTime<Utc>,
    LevelData,
    Pattern,
    Prefab,
    Image,
    Layer,
    Vec2,
    Color,
    AuthorReplay,
    Object,
    ObjectProperty,
    Brush,
    BrushObject,
    BrushGrid,
    Script,
    NovaScript,
    OldAction,
    OldActionType,
    OldActionProperty,
    Action,
    ActionType,
    NovaValue,
    DynamicType,
    FunctionCall,
    CallParameter,
    Variable,
    StaticType,
    Activator,
    Parameter,
    Uuid,
);

#[cfg(feature = "image")]
impl Sealed for DynamicImage {}

impl<T> Sealed for Vec<T> {}
impl<T, const LEN: usize> Sealed for [T; LEN] {}
impl<T> Sealed for Option<T> {}