use crate::error::Error;
use crate::value::{FromLua, FromLuaMulti, IntoLua, IntoLuaMulti, Value};
pub(crate) mod private {
pub trait Sealed {}
}
pub trait ObjectLike<'lua>: private::Sealed {
fn get<V>(&self, key: impl IntoLua<'lua>) -> Result<V, Error>
where
V: FromLua<'lua>;
fn set(&self, key: impl IntoLua<'lua>, value: impl IntoLua<'lua>) -> Result<(), Error>;
fn call<R>(&self, args: impl IntoLuaMulti<'lua>) -> Result<R, Error>
where
R: FromLuaMulti<'lua>;
fn call_method<R>(&self, name: &str, args: impl IntoLuaMulti<'lua>) -> Result<R, Error>
where
R: FromLuaMulti<'lua>;
fn call_function<R>(&self, name: &str, args: impl IntoLuaMulti<'lua>) -> Result<R, Error>
where
R: FromLuaMulti<'lua>;
fn to_string(&self) -> Result<String, Error>;
fn to_value(&self) -> Result<Value<'lua>, Error>;
}