to_bytes_derive 0.1.0

Serialize values into memory bytes
Documentation
#![allow(unused_macros)]
#![allow(dead_code)]
macro_rules! try_parser {
    { $f:ident($input:expr) } => {{
        let fork = &$input.fork();
        match $f(fork) {
            Ok(v) => { $input.advance_to(fork); Some(v) },
            Err(_) => None
        }
    }};
    { $input:expr; . $($t:tt)+ } => {{
        let fork = &$input.fork();
        match fork . $($t)+ {
            Ok(v) => { $input.advance_to(fork); Some(v) },
            Err(_) => None
        }
    }};
    { $input:expr; $($t:tt)+ } => {{
        let fork = &$input.fork();
        match fork.parse::<$($t)+>() {
            Ok(v) => { $input.advance_to(fork); Some(v) },
            Err(_) => None
        }
    }};
}
macro_rules! peek_parser {
    { $f:ident($input:expr) } => {{
        let fork = &$input.fork();
        match $f(fork) {
            Ok(v) => Some(v),
            Err(_) => None
        }
    }};
    { $input:expr; . $($t:tt)+ } => {{
        let fork = &$input.fork();
        match fork . $($t)+ {
            Ok(v) => Some(v),
            Err(_) => None
        }
    }};
    { $input:expr; $($t:tt)+ } => {{
        let fork = &$input.fork();
        match fork.parse::<$($t)+>() {
            Ok(v) => Some(v),
            Err(_) => None
        }
    }};
}
macro_rules! parse_char {
    { $input:expr; $($t:tt)* } => {
        $(
            $input.parse::<Token![$t]>()?;
        )*
    };
}

use syn::{
    parse::{ParseStream, Result},
    Attribute, Token,
};

#[inline]
pub fn parse_attrs(input: ParseStream) -> Result<Vec<Attribute>> {
    input.call(Attribute::parse_outer)
}
/// `---`
#[inline]
pub fn parse_split(input: ParseStream) -> Result<()> {
    parse_char![input;---];
    Ok(())
}
/// `;`
#[inline]
pub fn parse_end(input: ParseStream) -> Result<()> {
    parse_char![input;;];
    Ok(())
}
/// `,`
#[inline]
pub fn parse_comma(input: ParseStream) -> Result<()> {
    parse_char![input;,];
    Ok(())
}
/// `=`
#[inline]
pub fn parse_eq(input: ParseStream) -> Result<()> {
    parse_char![input;=];
    Ok(())
}

#[inline]
pub fn uppercase_first_letter(s: &String) -> String {
    let mut c = s.chars();
    match c.next() {
        None => String::new(),
        Some(f) => f.to_uppercase().collect::<String>() + c.as_str(),
    }
}