@@ -40,7 +40,7 @@ use super::fragmentation::{Fragmenter, FragmentsBuffer};
4040
4141#[ cfg( any( feature = "medium-ethernet" , feature = "medium-ieee802154" ) ) ]
4242use super :: neighbor:: { Answer as NeighborAnswer , Cache as NeighborCache } ;
43- use super :: socket_set:: SocketSet ;
43+ use super :: socket_set:: AnySocketSet ;
4444use crate :: config:: {
4545 IFACE_MAX_ADDR_COUNT , IFACE_MAX_MULTICAST_GROUP_COUNT ,
4646 IFACE_MAX_SIXLOWPAN_ADDRESS_CONTEXT_COUNT ,
@@ -396,14 +396,15 @@ impl Interface {
396396 /// This function returns a boolean value indicating whether any packets were
397397 /// processed or emitted, and thus, whether the readiness of any socket might
398398 /// have changed.
399- pub fn poll < D > (
399+ pub fn poll < ' socket , D , S > (
400400 & mut self ,
401401 timestamp : Instant ,
402402 device : & mut D ,
403- sockets : & mut SocketSet < ' _ > ,
403+ sockets : & mut S ,
404404 ) -> bool
405405 where
406406 D : Device + ?Sized ,
407+ S : AnySocketSet < ' socket > ,
407408 {
408409 self . inner . now = timestamp;
409410
@@ -459,7 +460,10 @@ impl Interface {
459460 ///
460461 /// [poll]: #method.poll
461462 /// [Instant]: struct.Instant.html
462- pub fn poll_at ( & mut self , timestamp : Instant , sockets : & SocketSet < ' _ > ) -> Option < Instant > {
463+ pub fn poll_at < ' socket , S > ( & mut self , timestamp : Instant , sockets : & S ) -> Option < Instant >
464+ where
465+ S : AnySocketSet < ' socket > ,
466+ {
463467 self . inner . now = timestamp;
464468
465469 #[ cfg( feature = "_proto-fragmentation" ) ]
@@ -493,17 +497,21 @@ impl Interface {
493497 ///
494498 /// [poll]: #method.poll
495499 /// [Duration]: struct.Duration.html
496- pub fn poll_delay ( & mut self , timestamp : Instant , sockets : & SocketSet < ' _ > ) -> Option < Duration > {
500+ pub fn poll_delay < ' socket , S > ( & mut self , timestamp : Instant , sockets : & S ) -> Option < Duration >
501+ where
502+ S : AnySocketSet < ' socket > ,
503+ {
497504 match self . poll_at ( timestamp, sockets) {
498505 Some ( poll_at) if timestamp < poll_at => Some ( poll_at - timestamp) ,
499506 Some ( _) => Some ( Duration :: from_millis ( 0 ) ) ,
500507 _ => None ,
501508 }
502509 }
503510
504- fn socket_ingress < D > ( & mut self , device : & mut D , sockets : & mut SocketSet < ' _ > ) -> bool
511+ fn socket_ingress < ' socket , D , S > ( & mut self , device : & mut D , sockets : & mut S ) -> bool
505512 where
506513 D : Device + ?Sized ,
514+ S : AnySocketSet < ' socket > ,
507515 {
508516 let mut processed_any = false ;
509517
@@ -572,9 +580,10 @@ impl Interface {
572580 processed_any
573581 }
574582
575- fn socket_egress < D > ( & mut self , device : & mut D , sockets : & mut SocketSet < ' _ > ) -> bool
583+ fn socket_egress < ' socket , D , S > ( & mut self , device : & mut D , sockets : & mut S ) -> bool
576584 where
577585 D : Device + ?Sized ,
586+ S : AnySocketSet < ' socket > ,
578587 {
579588 let _caps = device. capabilities ( ) ;
580589
@@ -779,13 +788,16 @@ impl InterfaceInner {
779788 }
780789
781790 #[ cfg( feature = "medium-ip" ) ]
782- fn process_ip < ' frame > (
791+ fn process_ip < ' frame , ' socket , S > (
783792 & mut self ,
784- sockets : & mut SocketSet ,
793+ sockets : & mut S ,
785794 meta : PacketMeta ,
786795 ip_payload : & ' frame [ u8 ] ,
787796 frag : & ' frame mut FragmentsBuffer ,
788- ) -> Option < Packet < ' frame > > {
797+ ) -> Option < Packet < ' frame > >
798+ where
799+ S : AnySocketSet < ' socket > ,
800+ {
789801 match IpVersion :: of_packet ( ip_payload) {
790802 #[ cfg( feature = "proto-ipv4" ) ]
791803 Ok ( IpVersion :: Ipv4 ) => {
@@ -804,12 +816,15 @@ impl InterfaceInner {
804816 }
805817
806818 #[ cfg( feature = "socket-raw" ) ]
807- fn raw_socket_filter (
819+ fn raw_socket_filter < ' socket , S > (
808820 & mut self ,
809- sockets : & mut SocketSet ,
821+ sockets : & mut S ,
810822 ip_repr : & IpRepr ,
811823 ip_payload : & [ u8 ] ,
812- ) -> bool {
824+ ) -> bool
825+ where
826+ S : AnySocketSet < ' socket > ,
827+ {
813828 let mut handled_by_raw_socket = false ;
814829
815830 // Pass every IP packet to all raw sockets we have registered.
0 commit comments