lua_protobuf_rs/descriptor/
oneof_descriptor.rs1use crate::descriptor::field_descriptor::LuaFieldDescriptor;
2use crate::descriptor::message_descriptor::LuaMessageDescriptor;
3use crate::descriptor_proto::oneof_descriptor_proto::LuaOneofDescriptorProto;
4use derive_more::{Deref, From, Into};
5use mlua::prelude::LuaUserData;
6use mlua::UserDataMethods;
7use protobuf::reflect::OneofDescriptor;
8
9#[derive(Eq, PartialEq, Clone, Debug, Deref, From, Into)]
10pub struct LuaOneofDescriptor(pub OneofDescriptor);
11
12impl LuaUserData for LuaOneofDescriptor {
13 fn add_methods<M: UserDataMethods<Self>>(methods: &mut M) {
14 methods.add_method("proto", |_, this, ()| {
15 let proto: LuaOneofDescriptorProto = this.proto().clone().into();
16 Ok(proto)
17 });
18
19 methods.add_method("name", |_, this, ()| {
20 Ok(this.name().to_string())
21 });
22
23 methods.add_method("containing_message", |_, this, ()| {
24 let descriptor: LuaMessageDescriptor = this.containing_message().into();
25 Ok(descriptor)
26 });
27
28 methods.add_method("is_synthetic", |_, this, ()| {
29 Ok(this.is_synthetic())
30 });
31
32 methods.add_method("full_name", |_, this, ()| {
33 Ok(this.full_name())
34 });
35
36 methods.add_method("fields", |_, this, ()| {
37 let descriptors: Vec<LuaFieldDescriptor> = this.fields().map(From::from).collect();
38 Ok(descriptors)
39 });
40 }
41}