use crate as starlark;
use crate::{
environment::{GlobalsBuilder, MethodsBuilder},
eval::Arguments,
values::{structs::Struct, Value},
};
#[starlark_module]
pub fn global(builder: &mut GlobalsBuilder) {
#[starlark(type(Struct::TYPE))]
fn r#struct<'v>(args: &Arguments<'v, '_>) -> anyhow::Result<Struct<'v>> {
args.no_positional_args(heap)?;
Ok(Struct::new(args.names_map()?))
}
}
#[starlark_module]
pub(crate) fn struct_methods(builder: &mut MethodsBuilder) {
#[starlark(speculative_exec_safe)]
fn to_json(this: Value) -> anyhow::Result<String> {
this.to_json()
}
}