physx 0.19.0

High-level Rust interface for Nvidia PhysX
Documentation
use physx::{base::RefCounted, prelude::*};

type PxMaterial = physx::material::PxMaterial<()>;
type PxShape = physx::shape::PxShape<(), PxMaterial>;

#[test]
fn test_double_free() {
    let mut physics = PhysicsFoundation::<_, PxShape>::default();

    let mut material = physics.create_material(0.5, 0.5, 0.6, ()).unwrap();
    let geometry = PxBoxGeometry::new(1., 1., 1.);
    let flags =
        ShapeFlags::SceneQueryShape | ShapeFlags::SimulationShape | ShapeFlags::Visualization;

    let shape = physics
        .create_shape(&geometry, &mut [&mut material], false, flags, ())
        .unwrap();

    assert_eq!(material.get_reference_count(), 2);
    drop(shape);

    assert_eq!(material.get_reference_count(), 1);
    drop(material);
}