prettyplease
Advanced tools
| { | ||
| "git": { | ||
| "sha1": "81c6daa38b2779def0f3dd9118004baf4d7a35fd" | ||
| "sha1": "d5239de6e22f0f0137faefdbb1a1590e17d4a0d4" | ||
| }, | ||
| "path_in_vcs": "" | ||
| } |
+5
-5
@@ -13,3 +13,3 @@ # This file is automatically @generated by Cargo. | ||
| name = "prettyplease" | ||
| version = "0.2.32" | ||
| version = "0.2.33" | ||
| dependencies = [ | ||
@@ -24,5 +24,5 @@ "indoc", | ||
| name = "proc-macro2" | ||
| version = "1.0.94" | ||
| version = "1.0.95" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" | ||
| checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" | ||
| dependencies = [ | ||
@@ -43,5 +43,5 @@ "unicode-ident", | ||
| name = "syn" | ||
| version = "2.0.100" | ||
| version = "2.0.101" | ||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" | ||
| checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" | ||
| dependencies = [ | ||
@@ -48,0 +48,0 @@ "proc-macro2", |
+1
-1
@@ -16,3 +16,3 @@ # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO | ||
| name = "prettyplease" | ||
| version = "0.2.32" | ||
| version = "0.2.33" | ||
| authors = ["David Tolnay <dtolnay@gmail.com>"] | ||
@@ -19,0 +19,0 @@ build = "build.rs" |
+89
-91
@@ -100,5 +100,5 @@ use crate::cmp::Ordering;use crate::fmt::{self, Write as FmtWrite}; | ||
| if u32::from_be_bytes(self.octets()) == 0xc0000009 || | ||
| u32::from_be_bytes(self.octets()) == 0xc000000a { | ||
| return true; | ||
| } | ||
| u32::from_be_bytes(self.octets()) == 0xc000000a { | ||
| return true; | ||
| } | ||
| !self.is_private() && !self.is_loopback() && !self.is_link_local() && | ||
@@ -173,15 +173,14 @@ !self.is_broadcast() && !self.is_documentation() && | ||
| if fmt.precision().is_none() && fmt.width().is_none() { | ||
| write!(fmt, "{}.{}.{}.{}", octets [0], octets [1], octets [2], | ||
| octets [3]) | ||
| } else { | ||
| const IPV4_BUF_LEN: usize = 15; | ||
| let mut buf = [0u8; IPV4_BUF_LEN]; | ||
| let mut buf_slice = &mut buf[..]; | ||
| write!(buf_slice, "{}.{}.{}.{}", octets [0], octets [1], octets | ||
| [2], octets [3]).unwrap(); | ||
| let len = IPV4_BUF_LEN - buf_slice.len(); | ||
| let buf = | ||
| unsafe { crate::str::from_utf8_unchecked(&buf[..len]) }; | ||
| fmt.pad(buf) | ||
| } | ||
| write!(fmt, "{}.{}.{}.{}", octets [0], octets [1], octets [2], | ||
| octets [3]) | ||
| } else { | ||
| const IPV4_BUF_LEN: usize = 15; | ||
| let mut buf = [0u8; IPV4_BUF_LEN]; | ||
| let mut buf_slice = &mut buf[..]; | ||
| write!(buf_slice, "{}.{}.{}.{}", octets [0], octets [1], octets | ||
| [2], octets [3]).unwrap(); | ||
| let len = IPV4_BUF_LEN - buf_slice.len(); | ||
| let buf = unsafe { crate::str::from_utf8_unchecked(&buf[..len]) }; | ||
| fmt.pad(buf) | ||
| } | ||
| } | ||
@@ -321,13 +320,13 @@ } | ||
| if self.is_multicast() { | ||
| match self.segments()[0] & 0x000f { | ||
| 1 => Some(Ipv6MulticastScope::InterfaceLocal), | ||
| 2 => Some(Ipv6MulticastScope::LinkLocal), | ||
| 3 => Some(Ipv6MulticastScope::RealmLocal), | ||
| 4 => Some(Ipv6MulticastScope::AdminLocal), | ||
| 5 => Some(Ipv6MulticastScope::SiteLocal), | ||
| 8 => Some(Ipv6MulticastScope::OrganizationLocal), | ||
| 14 => Some(Ipv6MulticastScope::Global), | ||
| _ => None, | ||
| } | ||
| } else { None } | ||
| match self.segments()[0] & 0x000f { | ||
| 1 => Some(Ipv6MulticastScope::InterfaceLocal), | ||
| 2 => Some(Ipv6MulticastScope::LinkLocal), | ||
| 3 => Some(Ipv6MulticastScope::RealmLocal), | ||
| 4 => Some(Ipv6MulticastScope::AdminLocal), | ||
| 5 => Some(Ipv6MulticastScope::SiteLocal), | ||
| 8 => Some(Ipv6MulticastScope::OrganizationLocal), | ||
| 14 => Some(Ipv6MulticastScope::Global), | ||
| _ => None, | ||
| } | ||
| } else { None } | ||
| } | ||
@@ -347,11 +346,11 @@ pub const fn is_multicast(&self) -> bool { | ||
| if let [0, 0, 0, 0, 0, 0 | 0xffff, ab, cd] = self.segments() { | ||
| let [a, b] = ab.to_be_bytes(); | ||
| let [c, d] = cd.to_be_bytes(); | ||
| Some(Ipv4Addr::new(a, b, c, d)) | ||
| } else { None } | ||
| let [a, b] = ab.to_be_bytes(); | ||
| let [c, d] = cd.to_be_bytes(); | ||
| Some(Ipv4Addr::new(a, b, c, d)) | ||
| } else { None } | ||
| } | ||
| pub const fn to_canonical(&self) -> IpAddr { | ||
| if let Some(mapped) = self.to_ipv4_mapped() { | ||
| return IpAddr::V4(mapped); | ||
| } | ||
| return IpAddr::V4(mapped); | ||
| } | ||
| IpAddr::V6(*self) | ||
@@ -364,61 +363,60 @@ } | ||
| if f.precision().is_none() && f.width().is_none() { | ||
| let segments = self.segments(); | ||
| if self.is_unspecified() { | ||
| f.write_str("::") | ||
| } else if self.is_loopback() { | ||
| f.write_str("::1") | ||
| } else if let Some(ipv4) = self.to_ipv4() { | ||
| match segments[5] { | ||
| 0 => write!(f, "::{}", ipv4), | ||
| 0xffff => write!(f, "::ffff:{}", ipv4), | ||
| _ => unreachable!(), | ||
| } | ||
| } else { | ||
| #[derive(Copy, Clone, Default)] | ||
| struct Span { | ||
| start: usize, | ||
| len: usize, | ||
| } | ||
| let zeroes = | ||
| { | ||
| let mut longest = Span::default(); | ||
| let mut current = Span::default(); | ||
| for (i, &segment) in segments.iter().enumerate() { | ||
| if segment == 0 { | ||
| if current.len == 0 { current.start = i; } | ||
| current.len += 1; | ||
| if current.len > longest.len { longest = current; } | ||
| } else { current = Span::default(); } | ||
| } | ||
| longest | ||
| }; | ||
| #[doc = " Write a colon-separated part of the address"] | ||
| #[inline] | ||
| fn fmt_subslice(f: &mut fmt::Formatter<'_>, chunk: &[u16]) | ||
| -> fmt::Result { | ||
| if let Some((first, tail)) = chunk.split_first() { | ||
| write!(f, "{:x}", first)?; | ||
| for segment in tail { | ||
| f.write_char(':')?; | ||
| write!(f, "{:x}", segment)?; | ||
| } | ||
| } | ||
| Ok(()) | ||
| } | ||
| if zeroes.len > 1 { | ||
| fmt_subslice(f, &segments[..zeroes.start])?; | ||
| f.write_str("::")?; | ||
| fmt_subslice(f, &segments[zeroes.start + zeroes.len..]) | ||
| } else { fmt_subslice(f, &segments) } | ||
| } | ||
| let segments = self.segments(); | ||
| if self.is_unspecified() { | ||
| f.write_str("::") | ||
| } else if self.is_loopback() { | ||
| f.write_str("::1") | ||
| } else if let Some(ipv4) = self.to_ipv4() { | ||
| match segments[5] { | ||
| 0 => write!(f, "::{}", ipv4), | ||
| 0xffff => write!(f, "::ffff:{}", ipv4), | ||
| _ => unreachable!(), | ||
| } | ||
| } else { | ||
| const IPV6_BUF_LEN: usize = (4 * 8) + 7; | ||
| let mut buf = [0u8; IPV6_BUF_LEN]; | ||
| let mut buf_slice = &mut buf[..]; | ||
| write!(buf_slice, "{}", self).unwrap(); | ||
| let len = IPV6_BUF_LEN - buf_slice.len(); | ||
| let buf = | ||
| unsafe { crate::str::from_utf8_unchecked(&buf[..len]) }; | ||
| f.pad(buf) | ||
| } | ||
| #[derive(Copy, Clone, Default)] | ||
| struct Span { | ||
| start: usize, | ||
| len: usize, | ||
| } | ||
| let zeroes = | ||
| { | ||
| let mut longest = Span::default(); | ||
| let mut current = Span::default(); | ||
| for (i, &segment) in segments.iter().enumerate() { | ||
| if segment == 0 { | ||
| if current.len == 0 { current.start = i; } | ||
| current.len += 1; | ||
| if current.len > longest.len { longest = current; } | ||
| } else { current = Span::default(); } | ||
| } | ||
| longest | ||
| }; | ||
| #[doc = " Write a colon-separated part of the address"] | ||
| #[inline] | ||
| fn fmt_subslice(f: &mut fmt::Formatter<'_>, chunk: &[u16]) | ||
| -> fmt::Result { | ||
| if let Some((first, tail)) = chunk.split_first() { | ||
| write!(f, "{:x}", first)?; | ||
| for segment in tail { | ||
| f.write_char(':')?; | ||
| write!(f, "{:x}", segment)?; | ||
| } | ||
| } | ||
| Ok(()) | ||
| } | ||
| if zeroes.len > 1 { | ||
| fmt_subslice(f, &segments[..zeroes.start])?; | ||
| f.write_str("::")?; | ||
| fmt_subslice(f, &segments[zeroes.start + zeroes.len..]) | ||
| } else { fmt_subslice(f, &segments) } | ||
| } | ||
| } else { | ||
| const IPV6_BUF_LEN: usize = (4 * 8) + 7; | ||
| let mut buf = [0u8; IPV6_BUF_LEN]; | ||
| let mut buf_slice = &mut buf[..]; | ||
| write!(buf_slice, "{}", self).unwrap(); | ||
| let len = IPV6_BUF_LEN - buf_slice.len(); | ||
| let buf = unsafe { crate::str::from_utf8_unchecked(&buf[..len]) }; | ||
| f.pad(buf) | ||
| } | ||
| } | ||
@@ -425,0 +423,0 @@ } |
+1
-1
@@ -323,3 +323,3 @@ //! [![github]](https://github.com/dtolnay/prettyplease) [![crates-io]](https://crates.io/crates/prettyplease) [![docs-rs]](https://docs.rs/prettyplease) | ||
| #![doc(html_root_url = "https://docs.rs/prettyplease/0.2.32")] | ||
| #![doc(html_root_url = "https://docs.rs/prettyplease/0.2.33")] | ||
| #![allow( | ||
@@ -326,0 +326,0 @@ clippy::bool_to_int_with_if, |
+7
-2
@@ -133,2 +133,3 @@ use crate::algorithm::Printer; | ||
| Dollar, | ||
| DollarCrate, | ||
| DollarIdent, | ||
@@ -156,3 +157,5 @@ DollarIdentColon, | ||
| let (needs_space, next_state) = match (&state, &token) { | ||
| (Dollar, Token::Ident(_)) => (false, if matcher { DollarIdent } else { Other }), | ||
| (Dollar, Token::Ident(_)) if matcher => (false, DollarIdent), | ||
| (Dollar, Token::Ident(ident)) if ident == "crate" => (false, DollarCrate), | ||
| (Dollar, Token::Ident(_)) => (false, Other), | ||
| (DollarIdent, Token::Punct(':', Spacing::Alone)) => (false, DollarIdentColon), | ||
@@ -185,3 +188,5 @@ (DollarIdentColon, Token::Ident(_)) => (false, Other), | ||
| (_, Token::Punct('.', _)) if !matcher => (state != Ident && state != Delim, Dot), | ||
| (_, Token::Punct(':', Spacing::Joint)) => (state != Ident, Colon), | ||
| (_, Token::Punct(':', Spacing::Joint)) => { | ||
| (state != Ident && state != DollarCrate, Colon) | ||
| } | ||
| (_, Token::Punct('$', _)) => (true, Dollar), | ||
@@ -188,0 +193,0 @@ (_, Token::Punct('#', _)) => (true, Pound), |
Sorry, the diff of this file is not supported yet