feat(client): remove Clone requirement for NetworkStream in Client
This commit is contained in:
20
src/net.rs
20
src/net.rs
@@ -53,25 +53,12 @@ impl<'a, N: NetworkListener + 'a> Iterator for NetworkConnections<'a, N> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// An abstraction over streams that a Server can utilize.
|
/// An abstraction over streams that a Server can utilize.
|
||||||
pub trait NetworkStream: Read + Write + Any + StreamClone + Send + Typeable {
|
pub trait NetworkStream: Read + Write + Any + Send + Typeable {
|
||||||
/// Get the remote address of the underlying connection.
|
/// Get the remote address of the underlying connection.
|
||||||
fn peer_addr(&mut self) -> io::Result<SocketAddr>;
|
fn peer_addr(&mut self) -> io::Result<SocketAddr>;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[doc(hidden)]
|
|
||||||
pub trait StreamClone {
|
|
||||||
fn clone_box(&self) -> Box<NetworkStream + Send>;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T: NetworkStream + Send + Clone> StreamClone for T {
|
|
||||||
#[inline]
|
|
||||||
fn clone_box(&self) -> Box<NetworkStream + Send> {
|
|
||||||
Box::new(self.clone())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A connector creates a NetworkStream.
|
/// A connector creates a NetworkStream.
|
||||||
pub trait NetworkConnector {
|
pub trait NetworkConnector {
|
||||||
/// Type of Stream to create
|
/// Type of Stream to create
|
||||||
@@ -92,11 +79,6 @@ impl fmt::Debug for Box<NetworkStream + Send> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Clone for Box<NetworkStream + Send> {
|
|
||||||
#[inline]
|
|
||||||
fn clone(&self) -> Box<NetworkStream + Send> { self.clone_box() }
|
|
||||||
}
|
|
||||||
|
|
||||||
impl NetworkStream + Send {
|
impl NetworkStream + Send {
|
||||||
unsafe fn downcast_ref_unchecked<T: 'static>(&self) -> &T {
|
unsafe fn downcast_ref_unchecked<T: 'static>(&self) -> &T {
|
||||||
mem::transmute(traitobject::data(self))
|
mem::transmute(traitobject::data(self))
|
||||||
|
|||||||
Reference in New Issue
Block a user