1#![deny(non_camel_case_types)]
11#![deny(unused_parens)]
12#![deny(non_upper_case_globals)]
13#![deny(unused_results)]
14#![deny(unused_qualifications)]
15#![warn(missing_docs)]
16#![warn(unused_imports)]
17#![allow(missing_copy_implementations)]
18#![allow(clippy::too_many_arguments)] #![allow(clippy::module_inception)]
20#![allow(clippy::manual_range_contains)] #![allow(clippy::type_complexity)] #![cfg_attr(feature = "dim2", doc(html_root_url = "https://docs.rs/parry2d"))]
23#![cfg_attr(feature = "dim3", doc(html_root_url = "https://docs.rs/parry3d"))]
24#![no_std]
25
26#[cfg(all(feature = "simd8", feature = "enhanced-determinism"))]
27core::compile_error!(
28 "8-lanes SIMD cannot be enabled when the `enhanced-determinism` feature is also enabled because it breaks cross-platform determinism."
29);
30
31#[allow(unused_macros)]
32macro_rules! array(
33 ($callback: expr; SIMD_WIDTH) => {
34 {
35 #[inline(always)]
36 #[allow(dead_code)]
37 fn create_arr<T>(callback: impl FnMut(usize) -> T) -> [T; SIMD_WIDTH] {
38 core::array::from_fn(callback)
41 }
42
43 create_arr($callback)
44 }
45 }
46);
47
48#[cfg(feature = "std")]
49extern crate std;
50
51#[cfg(feature = "alloc")]
52#[cfg_attr(test, macro_use)]
53extern crate alloc;
54
55#[cfg(feature = "serde")]
56#[macro_use]
57extern crate serde;
58#[macro_use]
59extern crate approx;
60extern crate num_traits as num;
61
62pub extern crate either;
63pub extern crate glamx;
64pub extern crate simba;
65
66#[macro_use]
67mod macros;
68
69pub mod bounding_volume;
70pub mod mass_properties;
71pub mod math;
72pub mod partitioning;
73pub mod query;
74pub mod shape;
75#[cfg(feature = "alloc")]
76pub mod transformation;
77pub mod utils;
78
79mod simd {
80 #[cfg(all(feature = "simd8", feature = "f32"))]
88 pub use simba::simd::{WideBoolF32x8 as SimdBool, WideF32x8 as SimdReal};
89
90 #[cfg(all(not(feature = "simd8"), feature = "f32"))]
92 pub use simba::simd::{WideBoolF32x4 as SimdBool, WideF32x4 as SimdReal};
93
94 #[cfg(feature = "f64")]
96 pub use simba::simd::{WideBoolF64x4 as SimdBool, WideF64x4 as SimdReal};
97
98 #[cfg(all(feature = "simd8", feature = "f32"))]
100 pub const SIMD_WIDTH: usize = 8;
101 #[cfg(all(feature = "simd8", feature = "f32"))]
103 pub const SIMD_LAST_INDEX: usize = 7;
104
105 #[cfg(not(all(feature = "simd8", feature = "f32")))]
107 pub const SIMD_WIDTH: usize = 4;
108 #[cfg(not(all(feature = "simd8", feature = "f32")))]
110 pub const SIMD_LAST_INDEX: usize = 3;
111}