micromegas_transit/
string_codec.rs1use crate::{Reflect, UserDefinedType};
2use lazy_static::lazy_static;
3use std::sync::Arc;
4
5#[repr(u8)]
6#[derive(Eq, PartialEq, Debug, Copy, Clone)]
7pub enum StringCodec {
8 Ansi = 0,
9 Wide = 1,
10 Utf8 = 2,
11}
12
13impl Reflect for StringCodec {
14 fn reflect() -> UserDefinedType {
15 lazy_static! {
16 static ref TYPE_NAME: Arc<String> = Arc::new("StringCodec".into());
17 }
18 UserDefinedType {
19 name: TYPE_NAME.clone(),
20 size: 1,
21 members: vec![],
22 is_reference: false,
23 secondary_udts: vec![],
24 }
25 }
26}
27
28impl TryFrom<u8> for StringCodec {
29 type Error = anyhow::Error;
30
31 fn try_from(value: u8) -> std::result::Result<Self, Self::Error> {
32 match value {
33 0 => Ok(StringCodec::Ansi),
34 1 => Ok(StringCodec::Wide),
35 2 => Ok(StringCodec::Utf8),
36 other => anyhow::bail!("invalid codec id {other}"),
37 }
38 }
39}