diff --git a/src/types/value_ref.rs b/src/types/value_ref.rs index 89a60ec4..89bac543 100644 --- a/src/types/value_ref.rs +++ b/src/types/value_ref.rs @@ -4,7 +4,7 @@ use std::os::raw::{c_int, c_void}; use crate::state::{RawLua, WeakLua}; /// A reference to a Lua (complex) value stored in the Lua auxiliary thread. -pub(crate) struct ValueRef { +pub struct ValueRef { pub(crate) lua: WeakLua, pub(crate) index: c_int, pub(crate) drop: bool, diff --git a/src/value.rs b/src/value.rs index 6c81ee55..9292261b 100644 --- a/src/value.rs +++ b/src/value.rs @@ -67,8 +67,7 @@ pub enum Value { /// `Error` is a special builtin userdata type. When received from Lua it is implicitly cloned. Error(Box), /// Any other value not known to mlua (eg. LuaJIT CData). - #[allow(private_interfaces)] - Other(ValueRef), + Other(#[doc(hidden)] ValueRef), } pub use self::Value::Nil; diff --git a/tests/value.rs b/tests/value.rs index 98fc222f..4185442e 100644 --- a/tests/value.rs +++ b/tests/value.rs @@ -296,3 +296,25 @@ fn test_value_conversions() -> Result<()> { Ok(()) } + +#[test] +fn test_value_exhaustive_match() { + match Value::Nil { + Value::Nil => {} + Value::Boolean(_) => {} + Value::LightUserData(_) => {} + Value::Integer(_) => {} + Value::Number(_) => {} + #[cfg(feature = "luau")] + Value::Vector(_) => {} + Value::String(_) => {} + Value::Table(_) => {} + Value::Function(_) => {} + Value::Thread(_) => {} + Value::UserData(_) => {} + #[cfg(feature = "luau")] + Value::Buffer(_) => {} + Value::Error(_) => {} + Value::Other(_) => {} + } +}