fluvio-protocol 0.50.1

Fluvio streaming protocol
Documentation
use fluvio_protocol::Decoder;

fn main() {}

#[derive(Default, Decoder)]
struct PassTupleStruct(u16, String);

#[derive(Default, Decoder)]
struct PassNamedStruct {
    number: u16,
    string: String,
}

#[repr(u16)]
#[derive(Decoder)]
#[fluvio(encode_discriminant)]
enum PassUnitEnum {
    One = 1,
    Two = 2,
    #[fluvio(tag = 5)]
    Three = 3,
}

impl Default for PassUnitEnum {
    fn default() -> Self {
        Self::One
    }
}

#[derive(Decoder)]
enum PassTupleEnum {
    #[fluvio(tag = 0)]
    First(String),
    #[fluvio(tag = 2)]
    Second(u16),
    #[fluvio(tag = 50)]
    Third(Vec<u8>),
}

impl Default for PassTupleEnum {
    fn default() -> Self {
        Self::First(Default::default())
    }
}

#[derive(Decoder)]
enum PassNamedEnum {
    #[fluvio(tag = 0)]
    Alpha {
        name: String,
        number: i32,
    },
    #[fluvio(tag = 30)]
    Beta {
        data: Vec<u8>,
    },
}

impl Default for PassNamedEnum {
    fn default() -> Self {
        Self::Alpha {
            name: Default::default(),
            number: Default::default(),
        }
    }
}