Macro nbt_lib::convert_list_to

source ·
macro_rules! convert_list_to {
    ($data:expr, $t:ty) => { ... };
    ($data:expr, $name:expr, $t:ty) => { ... };
}
Expand description

Converts a list of [NbtValue]s to a vector of a specified type.

§Examples

use nbt_lib::{convert_list_to, NbtValue, traits::FromNbtValue};

#[derive(Debug, PartialEq)]
struct Data(i32);

impl FromNbtValue for Data {
    fn from_nbt_value(value: NbtValue) -> Result<Self, ()> {
        match value {
            NbtValue::Int(v) => Ok(Data(v)),
            _ => Err(()),
        }
    }
}

fn test() -> Result<Vec<Data>, ()> {
    let data: Option<NbtValue> = Some(NbtValue::List(vec![NbtValue::Int(1), NbtValue::Int(2)]));
    let result: Vec<Data> = convert_list_to!(data, Data);
    Ok(result)
}
assert_eq!(test(), Ok(vec![Data(1), Data(2)]));

§Errors

Returns an error if the option is None or if the conversion fails.