Skip to main content

box2d_rs/
b2rs_common.rs

1#[cfg(feature="serde_support")]
2use serde::{de::DeserializeOwned, Serialize};
3
4use std::rc::{Rc,Weak};
5
6pub fn upgrade<T: ?Sized>(v: &Weak<T>) -> Rc<T> {
7	return v.upgrade().unwrap();
8}
9
10pub fn upgrade_opt<T: ?Sized>(v: &Option<Weak<T>>) -> Rc<T> {
11	return v.as_ref().unwrap().upgrade().unwrap();
12}
13
14#[cfg(not(feature="serde_support"))]
15pub trait UserDataType: Default + Clone + 'static {
16    type Fixture: Default + Clone + std::fmt::Debug;
17    type Body: Default + Clone + std::fmt::Debug;
18    type Joint: Default + Clone + std::fmt::Debug;
19}
20
21#[cfg(feature="serde_support")]
22pub trait UserDataType: Default + Clone + Serialize + DeserializeOwned + 'static {
23    type Fixture: Default + Clone + Serialize + DeserializeOwned + std::fmt::Debug;
24    type Body: Default + Clone + Serialize + DeserializeOwned + std::fmt::Debug;
25    type Joint: Default + Clone + Serialize + DeserializeOwned + std::fmt::Debug;
26}