Files
ncollide2d
bounding_volume
aabb.rsaabb_ball.rsaabb_compound.rsaabb_convex_polygon.rsaabb_cuboid.rsaabb_heightfield.rsaabb_plane.rsaabb_polyline.rsaabb_shape.rsaabb_support_map.rsaabb_utils.rsbounding_sphere.rsbounding_sphere_ball.rsbounding_sphere_capsule.rsbounding_sphere_compound.rsbounding_sphere_convex_polygon.rsbounding_sphere_cuboid.rsbounding_sphere_heightfield.rsbounding_sphere_plane.rsbounding_sphere_polyline.rsbounding_sphere_segment.rsbounding_sphere_shape.rsbounding_sphere_utils.rsbounding_volume.rscircular_cone.rsmod.rsspatialized_normal_cone.rs
interpolation
partitioning
pipeline
broad_phase
glue
narrow_phase
contact_generator
ball_ball_manifold_generator.rsball_convex_polyhedron_manifold_generator.rscapsule_capsule_manifold_generator.rscapsule_shape_manifold_generator.rscomposite_shape_composite_shape_manifold_generator.rscomposite_shape_shape_manifold_generator.rscontact_manifold_generator.rsconvex_polyhedron_convex_polyhedron_manifold_generator.rsdefault_contact_dispatcher.rsheightfield_shape_manifold_generator.rsmod.rsplane_ball_manifold_generator.rsplane_convex_polyhedron_manifold_generator.rs
proximity_detector
object
procedural
query
algorithms
closest_points
contact
distance
nonlinear_time_of_impact
point
proximity
ray
time_of_impact
visitors
shape
transformation
to_polyline
utils
ncollide3d
bounding_volume
aabb.rsaabb_ball.rsaabb_compound.rsaabb_convex.rsaabb_cuboid.rsaabb_heightfield.rsaabb_plane.rsaabb_polyline.rsaabb_shape.rsaabb_support_map.rsaabb_triangle.rsaabb_trimesh.rsaabb_utils.rsbounding_sphere.rsbounding_sphere_ball.rsbounding_sphere_capsule.rsbounding_sphere_compound.rsbounding_sphere_cone.rsbounding_sphere_convex.rsbounding_sphere_cuboid.rsbounding_sphere_cylinder.rsbounding_sphere_heightfield.rsbounding_sphere_plane.rsbounding_sphere_polyline.rsbounding_sphere_segment.rsbounding_sphere_shape.rsbounding_sphere_triangle.rsbounding_sphere_trimesh.rsbounding_sphere_utils.rsbounding_volume.rscircular_cone.rsmod.rsspatialized_normal_cone.rs
interpolation
partitioning
pipeline
broad_phase
glue
narrow_phase
contact_generator
ball_ball_manifold_generator.rsball_convex_polyhedron_manifold_generator.rscapsule_capsule_manifold_generator.rscapsule_shape_manifold_generator.rscomposite_shape_composite_shape_manifold_generator.rscomposite_shape_shape_manifold_generator.rscontact_manifold_generator.rsconvex_polyhedron_convex_polyhedron_manifold_generator.rsdefault_contact_dispatcher.rsheightfield_shape_manifold_generator.rsmod.rsplane_ball_manifold_generator.rsplane_convex_polyhedron_manifold_generator.rstrimesh_trimesh_manifold_generator.rs
proximity_detector
object
procedural
query
algorithms
closest_points
contact
distance
nonlinear_time_of_impact
point
proximity
ray
time_of_impact
visitors
shape
transformation
to_trimesh
utils
>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
use crate::utils::AsBytes; use std::hash::{Hash, Hasher}; /// A structure that implements `Eq` and is hashable even if the wrapped data implements only /// `PartialEq`. #[derive(PartialEq, Clone, Debug)] pub struct HashablePartialEq<T> { value: T, } impl<T> HashablePartialEq<T> { /// Creates a new `HashablePartialEq`. This is unsafe because you must be sure that you really /// want to transform the wrapped object's partial equality to an equivalence relation. pub unsafe fn new(value: T) -> HashablePartialEq<T> { HashablePartialEq { value: value } } /// Gets the wrapped value. pub fn unwrap(self) -> T { self.value } } impl<T: PartialEq> Eq for HashablePartialEq<T> {} impl<T: AsBytes> Hash for HashablePartialEq<T> { #[inline] fn hash<H: Hasher>(&self, state: &mut H) { state.write(self.value.as_bytes()) } }