@@ -372,7 +372,7 @@ impl IpAddr {
372372 /// Create a new IpAddr that contains an IPv4 address.
373373 ///
374374 /// The result will represent the IP address a.b.c.d
375- pub fn new_v4 ( a : u8 , b : u8 , c : u8 , d : u8 ) -> IpAddr {
375+ pub const fn new_v4 ( a : u8 , b : u8 , c : u8 , d : u8 ) -> IpAddr {
376376 IpAddr :: V4 ( Ipv4Addr :: new ( a, b, c, d) )
377377 }
378378
@@ -381,7 +381,7 @@ impl IpAddr {
381381 /// The result will represent the IP address a:b:c:d:e:f
382382 #[ allow( clippy:: many_single_char_names) ]
383383 #[ allow( clippy:: too_many_arguments) ]
384- pub fn new_v6 ( a : u16 , b : u16 , c : u16 , d : u16 , e : u16 , f : u16 , g : u16 , h : u16 ) -> IpAddr {
384+ pub const fn new_v6 ( a : u16 , b : u16 , c : u16 , d : u16 , e : u16 , f : u16 , g : u16 , h : u16 ) -> IpAddr {
385385 IpAddr :: V6 ( Ipv6Addr :: new ( a, b, c, d, e, f, g, h) )
386386 }
387387
@@ -420,11 +420,11 @@ pub struct Ipv4Addr(pub libc::in_addr);
420420
421421impl Ipv4Addr {
422422 #[ allow( clippy:: identity_op) ] // More readable this way
423- pub fn new ( a : u8 , b : u8 , c : u8 , d : u8 ) -> Ipv4Addr {
424- let ip = ( ( u32 :: from ( a ) << 24 ) |
425- ( u32 :: from ( b ) << 16 ) |
426- ( u32 :: from ( c ) << 8 ) |
427- ( u32 :: from ( d ) << 0 ) ) . to_be ( ) ;
423+ pub const fn new ( a : u8 , b : u8 , c : u8 , d : u8 ) -> Ipv4Addr {
424+ let ip = ( ( ( a as u32 ) << 24 ) |
425+ ( ( b as u32 ) << 16 ) |
426+ ( ( c as u32 ) << 8 ) |
427+ ( ( d as u32 ) << 0 ) ) . to_be ( ) ;
428428
429429 Ipv4Addr ( libc:: in_addr { s_addr : ip } )
430430 }
@@ -436,16 +436,16 @@ impl Ipv4Addr {
436436 Ipv4Addr :: new ( bits[ 0 ] , bits[ 1 ] , bits[ 2 ] , bits[ 3 ] )
437437 }
438438
439- pub fn any ( ) -> Ipv4Addr {
439+ pub const fn any ( ) -> Ipv4Addr {
440440 Ipv4Addr ( libc:: in_addr { s_addr : libc:: INADDR_ANY } )
441441 }
442442
443- pub fn octets ( self ) -> [ u8 ; 4 ] {
443+ pub const fn octets ( self ) -> [ u8 ; 4 ] {
444444 let bits = u32:: from_be ( self . 0 . s_addr ) ;
445445 [ ( bits >> 24 ) as u8 , ( bits >> 16 ) as u8 , ( bits >> 8 ) as u8 , bits as u8 ]
446446 }
447447
448- pub fn to_std ( self ) -> net:: Ipv4Addr {
448+ pub const fn to_std ( self ) -> net:: Ipv4Addr {
449449 let bits = self . octets ( ) ;
450450 net:: Ipv4Addr :: new ( bits[ 0 ] , bits[ 1 ] , bits[ 2 ] , bits[ 3 ] )
451451 }
@@ -486,7 +486,7 @@ macro_rules! to_u16_array {
486486impl Ipv6Addr {
487487 #[ allow( clippy:: many_single_char_names) ]
488488 #[ allow( clippy:: too_many_arguments) ]
489- pub fn new ( a : u16 , b : u16 , c : u16 , d : u16 , e : u16 , f : u16 , g : u16 , h : u16 ) -> Ipv6Addr {
489+ pub const fn new ( a : u16 , b : u16 , c : u16 , d : u16 , e : u16 , f : u16 , g : u16 , h : u16 ) -> Ipv6Addr {
490490 Ipv6Addr ( libc:: in6_addr { s6_addr : to_u8_array ! ( a, b, c, d, e, f, g, h) } )
491491 }
492492
@@ -496,11 +496,11 @@ impl Ipv6Addr {
496496 }
497497
498498 /// Return the eight 16-bit segments that make up this address
499- pub fn segments ( & self ) -> [ u16 ; 8 ] {
499+ pub const fn segments ( & self ) -> [ u16 ; 8 ] {
500500 to_u16_array ! ( self , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 )
501501 }
502502
503- pub fn to_std ( & self ) -> net:: Ipv6Addr {
503+ pub const fn to_std ( & self ) -> net:: Ipv6Addr {
504504 let s = self . segments ( ) ;
505505 net:: Ipv6Addr :: new ( s[ 0 ] , s[ 1 ] , s[ 2 ] , s[ 3 ] , s[ 4 ] , s[ 5 ] , s[ 6 ] , s[ 7 ] )
506506 }
@@ -913,11 +913,11 @@ pub mod netlink {
913913 NetlinkAddr ( addr)
914914 }
915915
916- pub fn pid ( & self ) -> u32 {
916+ pub const fn pid ( & self ) -> u32 {
917917 self . 0 . nl_pid
918918 }
919919
920- pub fn groups ( & self ) -> u32 {
920+ pub const fn groups ( & self ) -> u32 {
921921 self . 0 . nl_groups
922922 }
923923 }
@@ -1020,7 +1020,7 @@ pub mod sys_control {
10201020 pub struct SysControlAddr ( pub libc:: sockaddr_ctl ) ;
10211021
10221022 impl SysControlAddr {
1023- pub fn new ( id : u32 , unit : u32 ) -> SysControlAddr {
1023+ pub const fn new ( id : u32 , unit : u32 ) -> SysControlAddr {
10241024 let addr = libc:: sockaddr_ctl {
10251025 sc_len : mem:: size_of :: < libc:: sockaddr_ctl > ( ) as c_uchar ,
10261026 sc_family : AddressFamily :: System as c_uchar ,
@@ -1047,11 +1047,11 @@ pub mod sys_control {
10471047 Ok ( SysControlAddr :: new ( info. ctl_id , unit) )
10481048 }
10491049
1050- pub fn id ( & self ) -> u32 {
1050+ pub const fn id ( & self ) -> u32 {
10511051 self . 0 . sc_id
10521052 }
10531053
1054- pub fn unit ( & self ) -> u32 {
1054+ pub const fn unit ( & self ) -> u32 {
10551055 self . 0 . sc_unit
10561056 }
10571057 }
0 commit comments