Skip to content

Commit fea5a21

Browse files
committed
Selectively re-export core_type submodules
Switched to explicit re-exports instead of globs for submodules of `core_types`. This prevents details such as `Iter` and `IntoIter` from polluting the namespace and causing collisions, and makes it harder to accidentally introduce such exports in the future. Some of the submodules are made public to facilitate access to those types when necessary. The `variant_array` module has been renamed to `array` prior to this for simplicity. This is a breaking change, since public re-exports have been removed from the module.
1 parent 7d4ab54 commit fea5a21

File tree

9 files changed

+77
-61
lines changed

9 files changed

+77
-61
lines changed

gdnative-bindings/src/generated.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use libc::c_char;
77
use std::mem;
88
use std::ptr;
99

10+
use gdnative_core::core_types::variant::*;
1011
use gdnative_core::core_types::*;
1112
use gdnative_core::object::*;
1213
use gdnative_core::object::{memory, ownership};

gdnative-core/src/core_types/mod.rs

Lines changed: 67 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,36 @@
55
//!
66
//! godot-rust provides optional serialization support for many core types. Enable the feature `serde` to make use of it.
77
8-
mod geom;
9-
10-
mod access;
118
mod color;
12-
mod dictionary;
139
mod error;
1410
mod node_path;
1511
mod pool_array;
1612
mod rid;
17-
mod string;
18-
mod variant;
19-
mod variant_array;
2013
mod vector2;
2114
mod vector3;
2215

23-
pub use access::*;
24-
pub use color::*;
25-
pub use dictionary::*;
16+
pub mod access;
17+
pub mod array;
18+
pub mod dictionary;
19+
pub mod geom;
20+
pub mod string;
21+
pub mod variant;
22+
23+
pub use array::VariantArray;
24+
pub use color::Color;
25+
pub use dictionary::Dictionary;
2626
pub use error::{GodotError, GodotResult};
27-
pub use geom::*;
28-
pub use node_path::*;
29-
pub use pool_array::*;
30-
pub use rid::*;
31-
pub use string::*;
32-
pub use variant::*;
33-
pub use variant_array::*;
34-
pub use vector2::*;
35-
pub use vector3::*;
27+
pub use geom::{Aabb, Basis, Margin, MarginError, Plane, Quat, Rect2, Transform, Transform2D};
28+
pub use node_path::NodePath;
29+
pub use pool_array::{PoolArray, PoolElement};
30+
pub use rid::Rid;
31+
pub use string::{GodotString, StringName};
32+
pub use variant::{
33+
CoerceFromVariant, FromVariant, FromVariantError, OwnedToVariant, ToVariant, ToVariantEq,
34+
Variant, VariantType,
35+
};
36+
pub use vector2::Vector2;
37+
pub use vector3::{Axis, Vector3};
3638

3739
use approx::relative_eq;
3840

@@ -55,3 +57,49 @@ impl IsEqualApprox for f64 {
5557
relative_eq!(self, to, epsilon = CMP_EPSILON)
5658
}
5759
}
60+
61+
#[cfg(feature = "gd-test")]
62+
#[doc(hidden)]
63+
#[inline]
64+
#[must_use]
65+
pub fn test_core_types() -> bool {
66+
let mut status = true;
67+
68+
status &= string::test_string();
69+
status &= string::test_string_name_eq();
70+
status &= string::test_string_name_ord();
71+
72+
status &= array::test_array();
73+
status &= array::test_array_debug();
74+
status &= array::test_array_clone_clear();
75+
status &= dictionary::test_dictionary();
76+
status &= dictionary::test_dictionary_clone_clear();
77+
78+
status &= color::test_color();
79+
status &= vector2::test_vector2_variants();
80+
status &= vector3::test_vector3_variants();
81+
82+
status &= variant::test_variant_nil();
83+
status &= variant::test_variant_i64();
84+
status &= variant::test_variant_bool();
85+
status &= variant::test_variant_option();
86+
status &= variant::test_variant_result();
87+
status &= variant::test_variant_hash_map();
88+
status &= variant::test_variant_hash_set();
89+
status &= variant::test_variant_vec();
90+
status &= variant::test_to_variant_iter();
91+
status &= variant::test_variant_tuple();
92+
status &= variant::test_variant_dispatch();
93+
94+
status &= pool_array::test_byte_array_access();
95+
status &= pool_array::test_int32_array_access();
96+
status &= pool_array::test_float32_array_access();
97+
status &= pool_array::test_color_array_access();
98+
status &= pool_array::test_string_array_access();
99+
status &= pool_array::test_vector2_array_access();
100+
status &= pool_array::test_vector3_array_access();
101+
102+
status &= geom::test_transform2d_behavior();
103+
104+
status
105+
}

gdnative-core/src/core_types/variant/serialize.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ impl<'de> Visitor<'de> for VariantDispatchVisitor {
248248
v.newtype_variant::<Vec<VariantDispatch>>()?
249249
.iter()
250250
.map(Into::<Variant>::into)
251-
.collect::<variant_array::VariantArray<Unique>>()
251+
.collect::<array::VariantArray<Unique>>()
252252
.into_shared(),
253253
),
254254
ByteArray => VariantDispatch::ByteArray(v.newtype_variant()?),

gdnative-derive/src/variant/from.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ pub(crate) fn expand_from_variant(derive_data: DeriveData) -> Result<TokenStream
149149
use ::gdnative::core_types::ToVariant;
150150
use ::gdnative::core_types::FromVariant;
151151
use ::gdnative::core_types::FromVariantError as FVE;
152-
use ::gdnative::core_types::VariantEnumRepr;
153-
use ::gdnative::core_types::VariantStructRepr;
152+
use ::gdnative::core_types::variant::VariantEnumRepr;
153+
use ::gdnative::core_types::variant::VariantStructRepr;
154154

155155
#return_expr
156156
}

gdnative/src/prelude.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ pub use gdnative_bindings::{
66
};
77
pub use gdnative_core::core_types::{
88
Aabb, Basis, Color, Dictionary, GodotError, GodotString, NodePath, Plane, PoolArray, Quat,
9-
Rect2, Rid, StringName, Transform, Transform2D, Variant, VariantArray, VariantDispatch,
10-
VariantOperator, VariantType, Vector2, Vector3,
9+
Rect2, Rid, StringName, Transform, Transform2D, Variant, VariantArray, VariantType, Vector2,
10+
Vector3,
1111
};
1212
pub use gdnative_core::core_types::{
1313
FromVariant, FromVariantError, OwnedToVariant, ToVariant, ToVariantEq,

test/src/lib.rs

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,42 +25,8 @@ pub extern "C" fn run_tests(
2525
_args: *mut gdnative::sys::godot_array,
2626
) -> gdnative::sys::godot_variant {
2727
let mut status = true;
28-
status &= gdnative::core_types::test_string();
29-
status &= gdnative::core_types::test_string_name_eq();
30-
status &= gdnative::core_types::test_string_name_ord();
31-
32-
status &= gdnative::core_types::test_dictionary();
33-
status &= gdnative::core_types::test_dictionary_clone_clear();
34-
status &= gdnative::core_types::test_color();
35-
status &= gdnative::core_types::test_array();
36-
status &= gdnative::core_types::test_array_debug();
37-
status &= gdnative::core_types::test_array_clone_clear();
38-
39-
status &= gdnative::core_types::test_variant_nil();
40-
status &= gdnative::core_types::test_variant_i64();
41-
status &= gdnative::core_types::test_variant_bool();
42-
43-
status &= gdnative::core_types::test_vector2_variants();
44-
45-
status &= gdnative::core_types::test_vector3_variants();
46-
47-
status &= gdnative::core_types::test_variant_option();
48-
status &= gdnative::core_types::test_variant_result();
49-
status &= gdnative::core_types::test_variant_hash_map();
50-
status &= gdnative::core_types::test_variant_hash_set();
51-
status &= gdnative::core_types::test_variant_vec();
52-
status &= gdnative::core_types::test_to_variant_iter();
53-
status &= gdnative::core_types::test_variant_tuple();
54-
status &= gdnative::core_types::test_variant_dispatch();
55-
56-
status &= gdnative::core_types::test_byte_array_access();
57-
status &= gdnative::core_types::test_int32_array_access();
58-
status &= gdnative::core_types::test_float32_array_access();
59-
status &= gdnative::core_types::test_color_array_access();
60-
status &= gdnative::core_types::test_string_array_access();
61-
status &= gdnative::core_types::test_vector2_array_access();
62-
status &= gdnative::core_types::test_vector3_array_access();
63-
status &= gdnative::core_types::test_transform2d_behavior();
28+
29+
status &= gdnative::core_types::test_core_types();
6430

6531
status &= test_from_instance_id();
6632
status &= test_nil_object_return_value();

test/src/test_serde.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use gdnative::core_types::variant::VariantDispatch;
12
use gdnative::prelude::*;
23
use serde::{Deserialize, Serialize};
34

test/src/test_variant_ops.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use gdnative::core_types::InvalidOp;
1+
use gdnative::core_types::variant::{InvalidOp, VariantOperator};
22
use gdnative::prelude::*;
33

44
pub(crate) fn run_tests() -> bool {

0 commit comments

Comments
 (0)