Skip to content

Commit 3dc58cd

Browse files
committed
Move Luau Vector type to top level
1 parent 5724b5f commit 3dc58cd

File tree

7 files changed

+18
-27
lines changed

7 files changed

+18
-27
lines changed

src/conversion.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -350,15 +350,15 @@ impl FromLua for LightUserData {
350350
}
351351

352352
#[cfg(feature = "luau")]
353-
impl IntoLua for crate::types::Vector {
353+
impl IntoLua for crate::Vector {
354354
#[inline]
355355
fn into_lua(self, _: &Lua) -> Result<Value> {
356356
Ok(Value::Vector(self))
357357
}
358358
}
359359

360360
#[cfg(feature = "luau")]
361-
impl FromLua for crate::types::Vector {
361+
impl FromLua for crate::Vector {
362362
#[inline]
363363
fn from_lua(value: Value, _: &Lua) -> Result<Self> {
364364
match value {
@@ -848,7 +848,7 @@ where
848848
match value {
849849
#[cfg(feature = "luau")]
850850
#[rustfmt::skip]
851-
Value::Vector(v) if N == crate::types::Vector::SIZE => unsafe {
851+
Value::Vector(v) if N == crate::Vector::SIZE => unsafe {
852852
use std::{mem, ptr};
853853
let mut arr: [mem::MaybeUninit<T>; N] = mem::MaybeUninit::uninit().assume_init();
854854
ptr::write(arr[0].as_mut_ptr() , T::from_lua(Value::Number(v.x() as _), _lua)?);

src/lib.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ mod types;
9090
mod userdata;
9191
mod util;
9292
mod value;
93+
mod vector;
9394

9495
pub mod prelude;
9596

@@ -124,7 +125,7 @@ pub use crate::hook::HookTriggers;
124125

125126
#[cfg(any(feature = "luau", doc))]
126127
#[cfg_attr(docsrs, doc(cfg(feature = "luau")))]
127-
pub use crate::{buffer::Buffer, chunk::Compiler, function::CoverageInfo, types::Vector};
128+
pub use crate::{buffer::Buffer, chunk::Compiler, function::CoverageInfo, vector::Vector};
128129

129130
#[cfg(feature = "async")]
130131
pub use crate::{thread::AsyncThread, traits::LuaNativeAsyncFn};

src/serde/de.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ impl<'de> de::SeqAccess<'de> for SeqDeserializer<'_> {
420420

421421
#[cfg(feature = "luau")]
422422
struct VecDeserializer {
423-
vec: crate::types::Vector,
423+
vec: crate::Vector,
424424
next: usize,
425425
options: Options,
426426
visited: Rc<RefCell<FxHashSet<*const c_void>>>,
@@ -446,7 +446,7 @@ impl<'de> de::SeqAccess<'de> for VecDeserializer {
446446
}
447447

448448
fn size_hint(&self) -> Option<usize> {
449-
Some(crate::types::Vector::SIZE)
449+
Some(crate::Vector::SIZE)
450450
}
451451
}
452452

src/serde/ser.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ impl<'a> ser::Serializer for Serializer<'a> {
269269
#[inline]
270270
fn serialize_tuple_struct(self, name: &'static str, len: usize) -> Result<Self::SerializeTupleStruct> {
271271
#[cfg(feature = "luau")]
272-
if name == "Vector" && len == crate::types::Vector::SIZE {
272+
if name == "Vector" && len == crate::Vector::SIZE {
273273
return Ok(SerializeSeq::new_vector(self.lua, self.options));
274274
}
275275
_ = name;
@@ -343,7 +343,7 @@ impl<'a> ser::Serializer for Serializer<'a> {
343343
pub struct SerializeSeq<'a> {
344344
lua: &'a Lua,
345345
#[cfg(feature = "luau")]
346-
vector: Option<crate::types::Vector>,
346+
vector: Option<crate::Vector>,
347347
table: Option<Table>,
348348
next: usize,
349349
options: Options,
@@ -365,7 +365,7 @@ impl<'a> SerializeSeq<'a> {
365365
const fn new_vector(lua: &'a Lua, options: Options) -> Self {
366366
Self {
367367
lua,
368-
vector: Some(crate::types::Vector::zero()),
368+
vector: Some(crate::Vector::zero()),
369369
table: None,
370370
next: 0,
371371
options,

src/state/raw.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -613,9 +613,9 @@ impl RawLua {
613613
let v = ffi::lua_tovector(state, idx);
614614
mlua_debug_assert!(!v.is_null(), "vector is null");
615615
#[cfg(not(feature = "luau-vector4"))]
616-
return Value::Vector(crate::types::Vector([*v, *v.add(1), *v.add(2)]));
616+
return Value::Vector(crate::Vector([*v, *v.add(1), *v.add(2)]));
617617
#[cfg(feature = "luau-vector4")]
618-
return Value::Vector(crate::types::Vector([*v, *v.add(1), *v.add(2), *v.add(3)]));
618+
return Value::Vector(crate::Vector([*v, *v.add(1), *v.add(2), *v.add(3)]));
619619
}
620620

621621
ffi::LUA_TSTRING => {

src/types.rs

-5
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ pub use app_data::{AppData, AppDataRef, AppDataRefMut};
2020
pub use either::Either;
2121
pub use registry_key::RegistryKey;
2222
pub(crate) use value_ref::ValueRef;
23-
#[cfg(any(feature = "luau", doc))]
24-
pub use vector::Vector;
2523

2624
/// Type of Lua integer numbers.
2725
pub type Integer = ffi::lua_Integer;
@@ -127,9 +125,6 @@ mod registry_key;
127125
mod sync;
128126
mod value_ref;
129127

130-
#[cfg(any(feature = "luau", doc))]
131-
mod vector;
132-
133128
#[cfg(test)]
134129
mod assertions {
135130
use super::*;

src/types/vector.rs renamed to src/vector.rs

+6-11
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
use std::fmt;
22

3-
#[cfg(all(any(feature = "luau", doc), feature = "serialize"))]
3+
#[cfg(feature = "serialize")]
44
use serde::ser::{Serialize, SerializeTupleStruct, Serializer};
55

6-
use super::LuaType;
7-
86
/// A Luau vector type.
97
///
108
/// By default vectors are 3-dimensional, but can be 4-dimensional
@@ -23,6 +21,7 @@ impl fmt::Display for Vector {
2321
}
2422
}
2523

24+
#[cfg_attr(not(feature = "luau"), allow(unused))]
2625
impl Vector {
2726
pub(crate) const SIZE: usize = if cfg!(feature = "luau-vector4") { 4 } else { 3 };
2827

@@ -67,7 +66,7 @@ impl Vector {
6766
}
6867
}
6968

70-
#[cfg(all(any(feature = "luau", doc), feature = "serialize"))]
69+
#[cfg(feature = "serialize")]
7170
impl Serialize for Vector {
7271
fn serialize<S: Serializer>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error> {
7372
let mut ts = serializer.serialize_tuple_struct("Vector", Self::SIZE)?;
@@ -87,11 +86,7 @@ impl PartialEq<[f32; Self::SIZE]> for Vector {
8786
}
8887
}
8988

90-
impl LuaType for Vector {
91-
#[cfg(feature = "luau")]
92-
const TYPE_ID: i32 = ffi::LUA_TVECTOR;
93-
94-
// This is a dummy value, as `Vector` is supported only by Luau
95-
#[cfg(not(feature = "luau"))]
96-
const TYPE_ID: i32 = ffi::LUA_TNONE;
89+
#[cfg(feature = "luau")]
90+
impl crate::types::LuaType for Vector {
91+
const TYPE_ID: std::os::raw::c_int = ffi::LUA_TVECTOR;
9792
}

0 commit comments

Comments
 (0)