Rollup merge of #130629 - Dirbaio:net-from-octets, r=tgross35 · qinheping/verify-rust-std@6d8235e (original) (raw)

`@@ -600,6 +600,24 @@ impl Ipv4Addr {

`

600

600

`self.octets

`

601

601

`}

`

602

602

``

``

603

`` +

/// Creates an Ipv4Addr from a four element byte array.

``

``

604

`+

///

`

``

605

`+

/// # Examples

`

``

606

`+

///

`

``

607


/// ```

``

608

`+

/// #![feature(ip_from)]

`

``

609

`+

/// use std:🥅:Ipv4Addr;

`

``

610

`+

///

`

``

611

`+

/// let addr = Ipv4Addr::from_octets([13u8, 12u8, 11u8, 10u8]);

`

``

612

`+

/// assert_eq!(Ipv4Addr::new(13, 12, 11, 10), addr);

`

``

613


/// ```

``

614

`+

#[unstable(feature = "ip_from", issue = "131360")]

`

``

615

`+

#[must_use]

`

``

616

`+

#[inline]

`

``

617

`+

pub const fn from_octets(octets: [u8; 4]) -> Ipv4Addr {

`

``

618

`+

Ipv4Addr { octets }

`

``

619

`+

}

`

``

620

+

603

621

`` /// Returns [true] for the special 'unspecified' address (0.0.0.0).

``

604

622

`///

`

605

623

`/// This property is defined in UNIX Network Programming, Second Edition,

`

`@@ -1400,6 +1418,34 @@ impl Ipv6Addr {

`

1400

1418

`]

`

1401

1419

`}

`

1402

1420

``

``

1421

`` +

/// Creates an Ipv6Addr from an eight element 16-bit array.

``

``

1422

`+

///

`

``

1423

`+

/// # Examples

`

``

1424

`+

///

`

``

1425


/// ```

``

1426

`+

/// #![feature(ip_from)]

`

``

1427

`+

/// use std:🥅:Ipv6Addr;

`

``

1428

`+

///

`

``

1429

`+

/// let addr = Ipv6Addr::from_segments([

`

``

1430

`+

/// 0x20du16, 0x20cu16, 0x20bu16, 0x20au16,

`

``

1431

`+

/// 0x209u16, 0x208u16, 0x207u16, 0x206u16,

`

``

1432

`+

/// ]);

`

``

1433

`+

/// assert_eq!(

`

``

1434

`+

/// Ipv6Addr::new(

`

``

1435

`+

/// 0x20d, 0x20c, 0x20b, 0x20a,

`

``

1436

`+

/// 0x209, 0x208, 0x207, 0x206,

`

``

1437

`+

/// ),

`

``

1438

`+

/// addr

`

``

1439

`+

/// );

`

``

1440


/// ```

``

1441

`+

#[unstable(feature = "ip_from", issue = "131360")]

`

``

1442

`+

#[must_use]

`

``

1443

`+

#[inline]

`

``

1444

`+

pub const fn from_segments(segments: [u16; 8]) -> Ipv6Addr {

`

``

1445

`+

let [a, b, c, d, e, f, g, h] = segments;

`

``

1446

`+

Ipv6Addr::new(a, b, c, d, e, f, g, h)

`

``

1447

`+

}

`

``

1448

+

1403

1449

`` /// Returns [true] for the special 'unspecified' address (::).

``

1404

1450

`///

`

1405

1451

`/// This property is defined in [IETF RFC 4291].

`

`@@ -1932,7 +1978,7 @@ impl Ipv6Addr {

`

1932

1978

`/// use std:🥅:Ipv6Addr;

`

1933

1979

`///

`

1934

1980

`/// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).octets(),

`

1935

``

`-

/// [255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);

`

``

1981

`+

/// [0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);

`

1936

1982

```` /// ```


`1937`

`1983`

`#[rustc_const_stable(feature = "const_ip_32", since = "1.32.0")]

`

`1938`

`1984`

`#[stable(feature = "ipv6_to_octets", since = "1.12.0")]

`

`@@ -1941,6 +1987,33 @@ impl Ipv6Addr {

`

`1941`

`1987`

`pub const fn octets(&self) -> [u8; 16] {

`

`1942`

`1988`

`self.octets

`

`1943`

`1989`

`}

`

``

`1990`

`+`

``

`1991`

`` +

/// Creates an `Ipv6Addr` from a sixteen element byte array.

``

``

`1992`

`+

///

`

``

`1993`

`+

/// # Examples

`

``

`1994`

`+

///

`

``

`1995`

```` +

/// ```

``

1996

`+

/// #![feature(ip_from)]

`

``

1997

`+

/// use std:🥅:Ipv6Addr;

`

``

1998

`+

///

`

``

1999

`+

/// let addr = Ipv6Addr::from_octets([

`

``

2000

`+

/// 0x19u8, 0x18u8, 0x17u8, 0x16u8, 0x15u8, 0x14u8, 0x13u8, 0x12u8,

`

``

2001

`+

/// 0x11u8, 0x10u8, 0x0fu8, 0x0eu8, 0x0du8, 0x0cu8, 0x0bu8, 0x0au8,

`

``

2002

`+

/// ]);

`

``

2003

`+

/// assert_eq!(

`

``

2004

`+

/// Ipv6Addr::new(

`

``

2005

`+

/// 0x1918, 0x1716, 0x1514, 0x1312,

`

``

2006

`+

/// 0x1110, 0x0f0e, 0x0d0c, 0x0b0a,

`

``

2007

`+

/// ),

`

``

2008

`+

/// addr

`

``

2009

`+

/// );

`

``

2010


/// ```

``

2011

`+

#[unstable(feature = "ip_from", issue = "131360")]

`

``

2012

`+

#[must_use]

`

``

2013

`+

#[inline]

`

``

2014

`+

pub const fn from_octets(octets: [u8; 16]) -> Ipv6Addr {

`

``

2015

`+

Ipv6Addr { octets }

`

``

2016

`+

}

`

1944

2017

`}

`

1945

2018

``

1946

2019

`/// Writes an Ipv6Addr, conforming to the canonical style described by

`

`@@ -2113,15 +2186,13 @@ impl From<[u8; 16]> for Ipv6Addr {

`

2113

2186

`/// use std:🥅:Ipv6Addr;

`

2114

2187

`///

`

2115

2188

`/// let addr = Ipv6Addr::from([

`

2116

``

`-

/// 25u8, 24u8, 23u8, 22u8, 21u8, 20u8, 19u8, 18u8,

`

2117

``

`-

/// 17u8, 16u8, 15u8, 14u8, 13u8, 12u8, 11u8, 10u8,

`

``

2189

`+

/// 0x19u8, 0x18u8, 0x17u8, 0x16u8, 0x15u8, 0x14u8, 0x13u8, 0x12u8,

`

``

2190

`+

/// 0x11u8, 0x10u8, 0x0fu8, 0x0eu8, 0x0du8, 0x0cu8, 0x0bu8, 0x0au8,

`

2118

2191

`/// ]);

`

2119

2192

`/// assert_eq!(

`

2120

2193

`/// Ipv6Addr::new(

`

2121

``

`-

/// 0x1918, 0x1716,

`

2122

``

`-

/// 0x1514, 0x1312,

`

2123

``

`-

/// 0x1110, 0x0f0e,

`

2124

``

`-

/// 0x0d0c, 0x0b0a

`

``

2194

`+

/// 0x1918, 0x1716, 0x1514, 0x1312,

`

``

2195

`+

/// 0x1110, 0x0f0e, 0x0d0c, 0x0b0a,

`

2125

2196

`/// ),

`

2126

2197

`/// addr

`

2127

2198

`/// );

`

`@@ -2142,15 +2213,13 @@ impl From<[u16; 8]> for Ipv6Addr {

`

2142

2213

`/// use std:🥅:Ipv6Addr;

`

2143

2214

`///

`

2144

2215

`/// let addr = Ipv6Addr::from([

`

2145

``

`-

/// 525u16, 524u16, 523u16, 522u16,

`

2146

``

`-

/// 521u16, 520u16, 519u16, 518u16,

`

``

2216

`+

/// 0x20du16, 0x20cu16, 0x20bu16, 0x20au16,

`

``

2217

`+

/// 0x209u16, 0x208u16, 0x207u16, 0x206u16,

`

2147

2218

`/// ]);

`

2148

2219

`/// assert_eq!(

`

2149

2220

`/// Ipv6Addr::new(

`

2150

``

`-

/// 0x20d, 0x20c,

`

2151

``

`-

/// 0x20b, 0x20a,

`

2152

``

`-

/// 0x209, 0x208,

`

2153

``

`-

/// 0x207, 0x206

`

``

2221

`+

/// 0x20d, 0x20c, 0x20b, 0x20a,

`

``

2222

`+

/// 0x209, 0x208, 0x207, 0x206,

`

2154

2223

`/// ),

`

2155

2224

`/// addr

`

2156

2225

`/// );

`

`@@ -2172,15 +2241,13 @@ impl From<[u8; 16]> for IpAddr {

`

2172

2241

`/// use std:🥅:{IpAddr, Ipv6Addr};

`

2173

2242

`///

`

2174

2243

`/// let addr = IpAddr::from([

`

2175

``

`-

/// 25u8, 24u8, 23u8, 22u8, 21u8, 20u8, 19u8, 18u8,

`

2176

``

`-

/// 17u8, 16u8, 15u8, 14u8, 13u8, 12u8, 11u8, 10u8,

`

``

2244

`+

/// 0x19u8, 0x18u8, 0x17u8, 0x16u8, 0x15u8, 0x14u8, 0x13u8, 0x12u8,

`

``

2245

`+

/// 0x11u8, 0x10u8, 0x0fu8, 0x0eu8, 0x0du8, 0x0cu8, 0x0bu8, 0x0au8,

`

2177

2246

`/// ]);

`

2178

2247

`/// assert_eq!(

`

2179

2248

`/// IpAddr::V6(Ipv6Addr::new(

`

2180

``

`-

/// 0x1918, 0x1716,

`

2181

``

`-

/// 0x1514, 0x1312,

`

2182

``

`-

/// 0x1110, 0x0f0e,

`

2183

``

`-

/// 0x0d0c, 0x0b0a

`

``

2249

`+

/// 0x1918, 0x1716, 0x1514, 0x1312,

`

``

2250

`+

/// 0x1110, 0x0f0e, 0x0d0c, 0x0b0a,

`

2184

2251

`/// )),

`

2185

2252

`/// addr

`

2186

2253

`/// );

`

`@@ -2201,15 +2268,13 @@ impl From<[u16; 8]> for IpAddr {

`

2201

2268

`/// use std:🥅:{IpAddr, Ipv6Addr};

`

2202

2269

`///

`

2203

2270

`/// let addr = IpAddr::from([

`

2204

``

`-

/// 525u16, 524u16, 523u16, 522u16,

`

2205

``

`-

/// 521u16, 520u16, 519u16, 518u16,

`

``

2271

`+

/// 0x20du16, 0x20cu16, 0x20bu16, 0x20au16,

`

``

2272

`+

/// 0x209u16, 0x208u16, 0x207u16, 0x206u16,

`

2206

2273

`/// ]);

`

2207

2274

`/// assert_eq!(

`

2208

2275

`/// IpAddr::V6(Ipv6Addr::new(

`

2209

``

`-

/// 0x20d, 0x20c,

`

2210

``

`-

/// 0x20b, 0x20a,

`

2211

``

`-

/// 0x209, 0x208,

`

2212

``

`-

/// 0x207, 0x206

`

``

2276

`+

/// 0x20d, 0x20c, 0x20b, 0x20a,

`

``

2277

`+

/// 0x209, 0x208, 0x207, 0x206,

`

2213

2278

`/// )),

`

2214

2279

`/// addr

`

2215

2280

`/// );

`