@@ -1765,7 +1765,7 @@ pub fn sendmmsg<'a, XS, AS, C, I, S>(
1765
1765
// shared across all the messages
1766
1766
cmsgs: C ,
1767
1767
flags: MsgFlags
1768
- ) -> crate :: Result <MultiResults <' a, S >>
1768
+ ) -> crate :: Result <MultiResults <' a, ' a , S >>
1769
1769
where
1770
1770
XS : IntoIterator <Item = & ' a I >,
1771
1771
AS : AsRef <[ Option <S >] >,
@@ -1820,6 +1820,7 @@ pub fn sendmmsg<'a, XS, AS, C, I, S>(
1820
1820
Ok ( MultiResults {
1821
1821
rmm: data,
1822
1822
current_index: 0 ,
1823
+ slices: std:: marker:: PhantomData ,
1823
1824
received: sent
1824
1825
} )
1825
1826
@@ -1908,16 +1909,16 @@ impl<S> MultiHeaders<S> {
1908
1909
// always produce the desired results - see https://github.com/nix-rust/nix/pull/1744 for more
1909
1910
// details
1910
1911
#[ cfg( any( linux_android, target_os = "freebsd" , target_os = "netbsd" ) ) ]
1911
- pub fn recvmmsg<' a , XS , S , I >(
1912
+ pub fn recvmmsg<' hdr , ' iter , ' data , XS , S , I >(
1912
1913
fd: RawFd ,
1913
- data: & ' a mut MultiHeaders <S >,
1914
+ data: & ' hdr mut MultiHeaders <S >,
1914
1915
slices: XS ,
1915
1916
flags: MsgFlags ,
1916
1917
mut timeout: Option <crate :: sys:: time:: TimeSpec >,
1917
- ) -> crate :: Result <MultiResults <' a , S >>
1918
+ ) -> crate :: Result <MultiResults <' hdr , ' data , S >>
1918
1919
where
1919
- XS : IntoIterator <Item = & ' a mut I >,
1920
- I : AsMut <[ IoSliceMut <' a >] > + ' a ,
1920
+ XS : IntoIterator <Item = & ' iter mut I >,
1921
+ I : AsMut <[ IoSliceMut <' data >] > + ' iter ,
1921
1922
{
1922
1923
let mut count = 0 ;
1923
1924
for ( i, ( slice, mmsghdr) ) in slices. into_iter( ) . zip( data. items. iter_mut( ) ) . enumerate( ) {
@@ -1949,6 +1950,7 @@ where
1949
1950
} ) ? as usize ;
1950
1951
1951
1952
Ok ( MultiResults {
1953
+ slices: std:: marker:: PhantomData ,
1952
1954
rmm: data,
1953
1955
current_index: 0 ,
1954
1956
received,
@@ -1958,19 +1960,20 @@ where
1958
1960
/// Iterator over results of [`recvmmsg`]/[`sendmmsg`]
1959
1961
#[ cfg( any( linux_android, target_os = "freebsd" , target_os = "netbsd" ) ) ]
1960
1962
#[ derive( Debug ) ]
1961
- pub struct MultiResults <' a , S > {
1963
+ pub struct MultiResults <' hdrs , ' data , S > {
1962
1964
// preallocated structures
1963
- rmm: & ' a MultiHeaders <S >,
1965
+ rmm: & ' hdrs MultiHeaders <S >,
1966
+ slices: std:: marker:: PhantomData <& ' data ( ) >,
1964
1967
current_index: usize ,
1965
1968
received: usize ,
1966
1969
}
1967
1970
1968
1971
#[ cfg( any( linux_android, target_os = "freebsd" , target_os = "netbsd" ) ) ]
1969
- impl <' a , S > Iterator for MultiResults <' a , S >
1972
+ impl <' hdrs , ' data , S > Iterator for MultiResults <' hdrs , ' data , S >
1970
1973
where
1971
1974
S : Copy + SockaddrLike ,
1972
1975
{
1973
- type Item = RecvMsg <' a , ' a , S >;
1976
+ type Item = RecvMsg <' hdrs , ' data , S >;
1974
1977
1975
1978
// The cast is not unnecessary on all platforms.
1976
1979
#[ allow( clippy:: unnecessary_cast) ]
0 commit comments