use super::netdev::AnyNetDevice; use alloc::{collections::BTreeSet, sync::Arc}; use core::marker::PhantomData; use smoltcp::{iface::SocketHandle, socket::AnySocket, wire::IpAddress}; pub struct BoundSocket { address: IpAddress, port: u16, handle: SocketHandle, net_device: Arc, } pub enum Socket { Unbound, Bound(Arc), } pub struct SocketSet where T: for<'a> AnySocket<'a>, { sockets: BTreeSet>, _phantom: PhantomData, }