Struct embedded_nal::SharableStack [−][src]
Sharable wrapper for a network stack implementation.
An implementation of the stack traits that can contain (and provide provide single-threaded shared access to) another stack implementation. A direct implementation can only be used when owned or with a mutable reference. This implementation will store another implementation internally, and yield an arbitrary number of shared references to it, which themselves implement the stack traits.
use embedded_nal::SharableStack; let mut driver = SomeNalDriver::new(); // Driver can only be used in one place at a time. let mut sharable_driver = SharableStack::new(driver); // Sharable driver can't do anything on its own, but it can create many usable copies. let mut shared_driver0 = sharable_driver.acquire(); let mut shared_driver1 = sharable_driver.acquire(); // These shared copies can be passed around to other parts of an application's code, and used // independently. let mut socket0 = shared_driver0.socket()?; shared_driver0.connect(&mut socket0, SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080))); // ... // ... and somewhere else let mut socket1 = shared_driver1.socket()?; shared_driver1.connect(&mut socket1, SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8443))); // ...
Implementations
impl<T> SharableStack<T>
[src]
pub fn new(stack: T) -> Self
[src]
Create a new SharedStack that contains and uses some other stack implementation.
pub fn acquire(&self) -> SharedStack<'_, T>
[src]
Returns a shared reference to the driver that can be used as a first-class implementation.
Auto Trait Implementations
impl<T> Send for SharableStack<T> where
T: Send,
[src]
T: Send,
impl<T> !Sync for SharableStack<T>
[src]
impl<T> Unpin for SharableStack<T> where
T: Unpin,
[src]
T: Unpin,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,