-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stabilize the Saturating
type
#115477
Stabilize the Saturating
type
#115477
Conversation
(rustbot has picked a reviewer for you, use r? to override) |
Some changes occurred in src/tools/clippy cc @rust-lang/clippy |
Thank you for your PR! You have a merge commit in your PR. Merge commits are not allowed in this repository, please remove it. |
Also stabilizes saturating_int_assign_impl, rust-langgh-92354. And also make pub fns const where the underlying saturating_* fns became const in the meantime since the Saturating type was created.
84c55ca
to
ad54426
Compare
Thanks, it should be fixed now. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
@bors r+ |
Rollup of 6 pull requests Successful merges: - rust-lang#114965 (Remove Drop impl of mpsc Receiver and (Sync)Sender) - rust-lang#115434 (make `Debug` impl for `ascii::Char` match that of `char`) - rust-lang#115477 (Stabilize the `Saturating` type) - rust-lang#115611 (add diagnostic for raw identifiers in format string) - rust-lang#115654 (improve PassMode docs) - rust-lang#115862 (Migrate `compiler/rustc_hir_typeck/src/callee.rs` to translatable diagnostics) r? `@ghost` `@rustbot` modify labels: rollup
// // #[inline] | ||
// // fn shl_assign(&mut self, other: $f) { | ||
// // *self = *self << other; | ||
// // } | ||
// // } | ||
// // forward_ref_op_assign! { impl ShlAssign, shl_assign for Saturating<$t>, $f } | ||
// | ||
// #[unstable(feature = "saturating_int_impl", issue = "87920")] | ||
// impl Shr<$f> for Saturating<$t> { | ||
// type Output = Saturating<$t>; | ||
// | ||
// #[inline] | ||
// fn shr(self, other: $f) -> Saturating<$t> { | ||
// if other < 0 { | ||
// Saturating(self.0.shl((-other & self::shift_max::$t as $f) as u32)) | ||
// } else { | ||
// Saturating(self.0.shr((other & self::shift_max::$t as $f) as u32)) | ||
// } | ||
// } | ||
// } | ||
// forward_ref_binop! { impl Shr, shr for Saturating<$t>, $f, | ||
// #[unstable(feature = "saturating_int_impl", issue = "87920")] } | ||
// | ||
// #[unstable(feature = "saturating_int_impl", issue = "87920")] | ||
// impl ShrAssign<$f> for Saturating<$t> { | ||
// #[inline] | ||
// fn shr_assign(&mut self, other: $f) { | ||
// *self = *self >> other; | ||
// } | ||
// } | ||
// forward_ref_op_assign! { impl ShrAssign, shr_assign for Saturating<$t>, $f } | ||
// }; | ||
// } | ||
// | ||
// macro_rules! sh_impl_unsigned { | ||
// ($t:ident, $f:ident) => { | ||
// #[unstable(feature = "saturating_int_impl", issue = "87920")] | ||
// impl Shl<$f> for Saturating<$t> { | ||
// type Output = Saturating<$t>; | ||
// | ||
// #[inline] | ||
// fn shl(self, other: $f) -> Saturating<$t> { | ||
// Saturating(self.0.wrapping_shl(other as u32)) | ||
// } | ||
// } | ||
// forward_ref_binop! { impl Shl, shl for Saturating<$t>, $f, | ||
// #[unstable(feature = "saturating_int_impl", issue = "87920")] } | ||
// | ||
// #[unstable(feature = "saturating_int_impl", issue = "87920")] | ||
// impl ShlAssign<$f> for Saturating<$t> { | ||
// #[inline] | ||
// fn shl_assign(&mut self, other: $f) { | ||
// *self = *self << other; | ||
// } | ||
// } | ||
// forward_ref_op_assign! { impl ShlAssign, shl_assign for Saturating<$t>, $f } | ||
// | ||
// #[unstable(feature = "saturating_int_impl", issue = "87920")] | ||
// impl Shr<$f> for Saturating<$t> { | ||
// type Output = Saturating<$t>; | ||
// | ||
// #[inline] | ||
// fn shr(self, other: $f) -> Saturating<$t> { | ||
// Saturating(self.0.wrapping_shr(other as u32)) | ||
// } | ||
// } | ||
// forward_ref_binop! { impl Shr, shr for Saturating<$t>, $f, | ||
// #[unstable(feature = "saturating_int_impl", issue = "87920")] } | ||
// | ||
// #[unstable(feature = "saturating_int_impl", issue = "87920")] | ||
// impl ShrAssign<$f> for Saturating<$t> { | ||
// #[inline] | ||
// fn shr_assign(&mut self, other: $f) { | ||
// *self = *self >> other; | ||
// } | ||
// } | ||
// forward_ref_op_assign! { impl ShrAssign, shr_assign for Saturating<$t>, $f } | ||
// }; | ||
// } | ||
// | ||
// // FIXME (#23545): uncomment the remaining impls | ||
// macro_rules! sh_impl_all { | ||
// ($($t:ident)*) => ($( | ||
// //sh_impl_unsigned! { $t, u8 } | ||
// //sh_impl_unsigned! { $t, u16 } | ||
// //sh_impl_unsigned! { $t, u32 } | ||
// //sh_impl_unsigned! { $t, u64 } | ||
// //sh_impl_unsigned! { $t, u128 } | ||
// sh_impl_unsigned! { $t, usize } | ||
// | ||
// //sh_impl_signed! { $t, i8 } | ||
// //sh_impl_signed! { $t, i16 } | ||
// //sh_impl_signed! { $t, i32 } | ||
// //sh_impl_signed! { $t, i64 } | ||
// //sh_impl_signed! { $t, i128 } | ||
// //sh_impl_signed! { $t, isize } | ||
// )*) | ||
// } | ||
// | ||
// sh_impl_all! { u8 u16 u32 u64 u128 usize i8 i16 i32 i64 i128 isize } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This chunk of commented out code is expected?
Rollup merge of rust-lang#115477 - kellerkindt:stabilized_int_impl, r=dtolnay Stabilize the `Saturating` type Closes rust-lang#87920 Closes rust-lang#92354 Stabilization report rust-lang#87920 (comment) FCP rust-lang#87920 (comment)
…=dtolnay Stabilize the `Saturating` type Closes rust-lang#87920 Closes rust-lang#92354 Stabilization report rust-lang#87920 (comment) FCP rust-lang#87920 (comment)
@rustbot label: +relnotes ... I guess? |
Is there any reason why Saturating does not implement FromStr trait ? |
I don't see the point as you can do |
Yes, of course, I can do it but when I use a fn which relies on FromStr, I can't do it.
In other words, I can’t switch the use of I would like to use it transparently, so stg like the following would be nice:
in the same way you offer But, ok, I understand that it is not so easy to decide how many standard traits you need to reimplement. |
I am not the one deciding whether this should be in the standard library or not, so I encourage you to just propose it in a separate PR to get some proper feedback :) |
Pkgsrc changes: * Remove NetBSD-8 support (embedded LLVm requires newer C++ than what is in -8; it's conceivable that this could still build with an external LLVM) * undo powerpc 9.0 file naming tweak, since we no longer support -8. * Remove patch to LLVM for powerpc now included by upstream. * Minor adjustments, checksum changes etc. Upstream changes: Version 1.74.1 (2023-12-07) =========================== - [Resolved spurious STATUS_ACCESS_VIOLATIONs in LLVM] (rust-lang/rust#118464) - [Clarify guarantees for std::mem::discriminant] (rust-lang/rust#118006) - [Fix some subtyping-related regressions] (rust-lang/rust#116415) Version 1.74.0 (2023-11-16) ========================== Language -------- - [Codify that `std::mem::Discriminant<T>` does not depend on any lifetimes in T] (rust-lang/rust#104299) - [Replace `private_in_public` lint with `private_interfaces` and `private_bounds` per RFC 2145] (rust-lang/rust#113126) Read more in [RFC 2145](https://rust-lang.github.io/rfcs/2145-type-privacy.html). - [Allow explicit `#[repr(Rust)]`] (rust-lang/rust#114201) - [closure field capturing: don't depend on alignment of packed fields] (rust-lang/rust#115315) - [Enable MIR-based drop-tracking for `async` blocks] (rust-lang/rust#107421) Compiler -------- - [stabilize combining +bundle and +whole-archive link modifiers] (rust-lang/rust#113301) - [Stabilize `PATH` option for `--print KIND=PATH`] (rust-lang/rust#114183) - [Enable ASAN/LSAN/TSAN for `*-apple-ios-macabi`] (rust-lang/rust#115644) - [Promote loongarch64-unknown-none* to Tier 2] (rust-lang/rust#115368) - [Add `i686-pc-windows-gnullvm` as a tier 3 target] (rust-lang/rust#115687) Libraries --------- - [Implement `From<OwnedFd/Handle>` for ChildStdin/out/err] (rust-lang/rust#98704) - [Implement `From<{&,&mut} [T; N]>` for `Vec<T>` where `T: Clone`] (rust-lang/rust#111278) - [impl Step for IP addresses] (rust-lang/rust#113748) - [Implement `From<[T; N]>` for `Rc<[T]>` and `Arc<[T]>`] (rust-lang/rust#114041) - [`impl TryFrom<char> for u16`] (rust-lang/rust#114065) - [Stabilize `io_error_other` feature] (rust-lang/rust#115453) - [Stabilize the `Saturating` type] (rust-lang/rust#115477) - [Stabilize const_transmute_copy] (rust-lang/rust#115520) Stabilized APIs --------------- - [`core::num::Saturating`] (https://doc.rust-lang.org/stable/std/num/struct.Saturating.html) - [`impl From<io::Stdout> for std::process::Stdio`] (https://doc.rust-lang.org/stable/std/process/struct.Stdio.html#impl-From%3CStdout%3E-for-Stdio) - [`impl From<io::Stderr> for std::process::Stdio`] (https://doc.rust-lang.org/stable/std/process/struct.Stdio.html#impl-From%3CStderr%3E-for-Stdio) - [`impl From<OwnedHandle> for std::process::Child{Stdin, Stdout, Stderr}`] (https://doc.rust-lang.org/stable/std/process/struct.Stdio.html#impl-From%3CStderr%3E-for-Stdio) - [`impl From<OwnedFd> for std::process::Child{Stdin, Stdout, Stderr}`] (https://doc.rust-lang.org/stable/std/process/struct.Stdio.html#impl-From%3CStderr%3E-for-Stdio) - [`std::ffi::OsString::from_encoded_bytes_unchecked`] (https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.from_encoded_bytes_unchecked) - [`std::ffi::OsString::into_encoded_bytes`] (https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.into_encoded_bytes) - [`std::ffi::OsStr::from_encoded_bytes_unchecked`] (https://doc.rust-lang.org/stable/std/ffi/struct.OsStr.html#method.from_encoded_bytes_unchecked) - [`std::ffi::OsStr::as_encoded_bytes`] (https://doc.rust-lang.org/stable/std/ffi/struct.OsStr.html#method.as_encoded_bytes) - [`std::io::Error::other`] (https://doc.rust-lang.org/stable/std/io/struct.Error.html#method.other) - [`impl TryFrom<char> for u16`] (https://doc.rust-lang.org/stable/std/primitive.u16.html#impl-TryFrom%3Cchar%3E-for-u16) - [`impl<T: Clone, const N: usize> From<&[T; N]> for Vec<T>`] (https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#impl-From%3C%26%5BT;+N%5D%3E-for-Vec%3CT,+Global%3E) - [`impl<T: Clone, const N: usize> From<&mut [T; N]> for Vec<T>`] (https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#impl-From%3C%26mut+%5BT;+N%5D%3E-for-Vec%3CT,+Global%3E) - [`impl<T, const N: usize> From<[T; N]> for Arc<[T]>`] (https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#impl-From%3C%5BT;+N%5D%3E-for-Arc%3C%5BT%5D,+Global%3E) - [`impl<T, const N: usize> From<[T; N]> for Rc<[T]>`] (https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#impl-From%3C%5BT;+N%5D%3E-for-Rc%3C%5BT%5D,+Global%3E) These APIs are now stable in const contexts: - [`core::mem::transmute_copy`] (https://doc.rust-lang.org/beta/std/mem/fn.transmute_copy.html) - [`str::is_ascii`] (https://doc.rust-lang.org/beta/std/primitive.str.html#method.is_ascii) - [`[u8]::is_ascii`] (https://doc.rust-lang.org/beta/std/primitive.slice.html#method.is_ascii) Cargo ----- - [fix: Set MSRV for internal packages] (rust-lang/cargo#12381) - [config: merge lists in precedence order] (rust-lang/cargo#12515) - [fix(update): Clarify meaning of --aggressive as --recursive] (rust-lang/cargo#12544) - [fix(update): Make `-p` more convenient by being positional] (rust-lang/cargo#12545) - [feat(help): Add styling to help output ] (rust-lang/cargo#12578) - [feat(pkgid): Allow incomplete versions when unambigious] (rust-lang/cargo#12614) - [feat: stabilize credential-process and registry-auth] (rust-lang/cargo#12649) - [feat(cli): Add '-n' to dry-run] (rust-lang/cargo#12660) - [Add support for `target.'cfg(..)'.linker`] (rust-lang/cargo#12535) - [Stabilize `--keep-going`] (rust-lang/cargo#12568) - [feat: Stabilize lints] (rust-lang/cargo#12648) Rustdoc ------- - [Add warning block support in rustdoc] (rust-lang/rust#106561) - [Accept additional user-defined syntax classes in fenced code blocks] (rust-lang/rust#110800) - [rustdoc-search: add support for type parameters] (rust-lang/rust#112725) - [rustdoc: show inner enum and struct in type definition for concrete type] (rust-lang/rust#114855) Compatibility Notes ------------------- - [Raise minimum supported Apple OS versions] (rust-lang/rust#104385) - [make Cell::swap panic if the Cells partially overlap] (rust-lang/rust#114795) - [Reject invalid crate names in `--extern`] (rust-lang/rust#116001) - [Don't resolve generic impls that may be shadowed by dyn built-in impls] (rust-lang/rust#114941) Internal Changes ---------------- These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools. None this cycle.
Closes #87920
Closes #92354
Stabilization report #87920 (comment)
FCP #87920 (comment)