bve 0.0.1

Remaking OpenBVE using a modern architecture, using Unity and Rust.
pub use crate::log::common::Data as MessageValue;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use tracing_core::Level;

#[derive(Clone, Debug, Deserialize, Serialize)]
pub enum Message {
    CreateSpan {
        id: u64,
        name: String,
        module: String,
        file: String,
        line: u16,
        severity: Severity,
        values: HashMap<String, MessageValue>,
    },
    SpanData {
        id: u64,
        values: HashMap<String, MessageValue>,
    },
    SpanParent {
        parent: u64,
        child: u64,
    },
    Event {
        span_id: Option<u64>,
        file: String,
        line: u16,
        severity: Severity,
        message: Option<String>,
        values: HashMap<String, MessageValue>,
    },
}

#[derive(Clone, Debug, Deserialize, Serialize)]
pub enum Severity {
    Trace,
    Debug,
    Info,
    Warn,
    Error,
}

impl From<Level> for Severity {
    #[inline]
    fn from(l: Level) -> Self {
        From::from(&l)
    }
}

impl From<&Level> for Severity {
    #[inline]
    fn from(l: &Level) -> Self {
        if *l == Level::ERROR {
            Self::Error
        } else if *l == Level::WARN {
            Self::Warn
        } else if *l == Level::INFO {
            Self::Info
        } else if *l == Level::DEBUG {
            Self::Debug
        } else {
            Self::Trace
        }
    }
}