use naia_socket_shared::IdentityToken;
pub enum IdentityReceiverResult {
Waiting,
Success(IdentityToken),
ErrorResponseCode(u16),
}
pub trait IdentityReceiver: IdentityReceiverClone + Send + Sync {
fn receive(&mut self) -> IdentityReceiverResult;
}
pub trait IdentityReceiverClone {
fn clone_box(&self) -> Box<dyn IdentityReceiver>;
}
impl<T: 'static + IdentityReceiver + Clone> IdentityReceiverClone for T {
fn clone_box(&self) -> Box<dyn IdentityReceiver> {
Box::new(self.clone())
}
}
impl Clone for Box<dyn IdentityReceiver> {
fn clone(&self) -> Box<dyn IdentityReceiver> {
IdentityReceiverClone::clone_box(self.as_ref())
}
}