lua_protobuf_rs/descriptor/
enum_value_descriptor.rs

1use crate::descriptor::enum_descriptor::LuaEnumDescriptor;
2use crate::descriptor_proto::enum_value_descriptor_proto::LuaEnumValueDescriptorProto;
3use derive_more::{Deref, From, Into};
4use mlua::prelude::LuaUserData;
5use mlua::{MetaMethod, UserDataMethods};
6use protobuf::reflect::EnumValueDescriptor;
7
8#[derive(Clone, Eq, PartialEq, Hash, Deref, From, Into)]
9pub struct LuaEnumValueDescriptor(pub EnumValueDescriptor);
10
11impl LuaUserData for LuaEnumValueDescriptor {
12    fn add_methods<M: UserDataMethods<Self>>(methods: &mut M) {
13        methods.add_method(MetaMethod::ToString, |_, this, ()| {
14            Ok(this.to_string())
15        });
16
17        methods.add_method("proto", |_, this, ()| {
18            Ok::<LuaEnumValueDescriptorProto, _>(this.proto().clone().into())
19        });
20
21        methods.add_method("name", |_, this, ()| {
22            Ok(this.name().to_string())
23        });
24
25        methods.add_method("full_name", |_, this, ()| {
26            Ok(this.full_name())
27        });
28
29        methods.add_method("value", |_, this, ()| {
30            Ok(this.value())
31        });
32
33        methods.add_method("enum_descriptor", |_, this, ()| {
34            Ok(LuaEnumDescriptor(this.enum_descriptor().clone()))
35        });
36
37        // methods.add_method("cast", |_, this, ()| {
38        //     Ok(this.cast::<E>())
39        // });
40    }
41}