Trait tealr::mlu::TealData

source ·
pub trait TealData: Sized + ToTypename {
    // Provided methods
    fn add_methods<'lua, T: TealDataMethods<'lua, Self>>(_methods: &mut T) { ... }
    fn add_fields<'lua, F: TealDataFields<'lua, Self>>(_fields: &mut F) { ... }
}
Expand description

This is the teal version of UserData.

Provided Methods§

source

fn add_methods<'lua, T: TealDataMethods<'lua, Self>>(_methods: &mut T)

same as UserData::add_methods. Refer to its documentation on how to use it.

only difference is that it takes a TealDataMethods, which is the teal version of UserDataMethods

Examples found in repository?
examples/mlua/manual.rs (line 63)
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
    fn add_methods<'lua, T: UserDataMethods<'lua, Self>>(methods: &mut T) {
        let mut wrapper = UserDataWrapper::from_user_data_methods(methods);
        <Self as TealData>::add_methods(&mut wrapper)
    }
    fn add_fields<'lua, F: mlua::UserDataFields<'lua, Self>>(fields: &mut F) {
        let mut wrapper = UserDataWrapper::from_user_data_fields(fields);
        <Self as TealData>::add_fields(&mut wrapper)
    }
}

impl TypeBody for Example {
    fn get_type_body() -> tealr::TypeGenerator {
        let mut gen = tealr::RecordGenerator::new::<Self>(false);
        gen.is_user_data = true;
        <Self as TealData>::add_fields(&mut gen);
        <Self as TealData>::add_methods(&mut gen);
        gen.into()
    }
More examples
Hide additional examples
examples/mlua/manual_documentation.rs (line 75)
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
    fn add_methods<'lua, T: UserDataMethods<'lua, Self>>(methods: &mut T) {
        let mut wrapper = UserDataWrapper::from_user_data_methods(methods);
        <Self as TealData>::add_methods(&mut wrapper);
    }
    fn add_fields<'lua, F: mlua::UserDataFields<'lua, Self>>(fields: &mut F) {
        let mut wrapper = UserDataWrapper::from_user_data_fields(fields);
        <Self as TealData>::add_fields(&mut wrapper);
    }
}

impl TypeBody for Example {
    fn get_type_body() -> tealr::TypeGenerator {
        let mut gen = tealr::RecordGenerator::new::<Self>(false);
        gen.is_user_data = true;
        <Self as TealData>::add_fields(&mut gen);
        <Self as TealData>::add_methods(&mut gen);
        gen.into()
    }
source

fn add_fields<'lua, F: TealDataFields<'lua, Self>>(_fields: &mut F)

same as UserData::add_fields. Refer to its documentation on how to use it.

only difference is that it takes a TealDataFields, which is the teal version of UserDataFields

Examples found in repository?
examples/mlua/manual.rs (line 67)
65
66
67
68
69
70
71
72
73
74
75
76
77
78
    fn add_fields<'lua, F: mlua::UserDataFields<'lua, Self>>(fields: &mut F) {
        let mut wrapper = UserDataWrapper::from_user_data_fields(fields);
        <Self as TealData>::add_fields(&mut wrapper)
    }
}

impl TypeBody for Example {
    fn get_type_body() -> tealr::TypeGenerator {
        let mut gen = tealr::RecordGenerator::new::<Self>(false);
        gen.is_user_data = true;
        <Self as TealData>::add_fields(&mut gen);
        <Self as TealData>::add_methods(&mut gen);
        gen.into()
    }
More examples
Hide additional examples
examples/mlua/manual_documentation.rs (line 79)
77
78
79
80
81
82
83
84
85
86
87
88
89
90
    fn add_fields<'lua, F: mlua::UserDataFields<'lua, Self>>(fields: &mut F) {
        let mut wrapper = UserDataWrapper::from_user_data_fields(fields);
        <Self as TealData>::add_fields(&mut wrapper);
    }
}

impl TypeBody for Example {
    fn get_type_body() -> tealr::TypeGenerator {
        let mut gen = tealr::RecordGenerator::new::<Self>(false);
        gen.is_user_data = true;
        <Self as TealData>::add_fields(&mut gen);
        <Self as TealData>::add_methods(&mut gen);
        gen.into()
    }

Object Safety§

This trait is not object safe.

Implementors§