Make sure that signatures aren't accidental refinements

This commit is contained in:
Michael Goulet
2023-04-28 17:36:49 +00:00
parent 1c42cb4ef0
commit 33871c97ab
6 changed files with 84 additions and 24 deletions
+48 -12
View File
@@ -1543,11 +1543,17 @@ fn last(mut self) -> Option<(&'a K, &'a V)> {
self.next_back()
}
fn min(mut self) -> Option<(&'a K, &'a V)> {
fn min(mut self) -> Option<(&'a K, &'a V)>
where
(&'a K, &'a V): Ord,
{
self.next()
}
fn max(mut self) -> Option<(&'a K, &'a V)> {
fn max(mut self) -> Option<(&'a K, &'a V)>
where
(&'a K, &'a V): Ord,
{
self.next_back()
}
}
@@ -1612,11 +1618,17 @@ fn last(mut self) -> Option<(&'a K, &'a mut V)> {
self.next_back()
}
fn min(mut self) -> Option<(&'a K, &'a mut V)> {
fn min(mut self) -> Option<(&'a K, &'a mut V)>
where
(&'a K, &'a mut V): Ord,
{
self.next()
}
fn max(mut self) -> Option<(&'a K, &'a mut V)> {
fn max(mut self) -> Option<(&'a K, &'a mut V)>
where
(&'a K, &'a mut V): Ord,
{
self.next_back()
}
}
@@ -1779,11 +1791,17 @@ fn last(mut self) -> Option<&'a K> {
self.next_back()
}
fn min(mut self) -> Option<&'a K> {
fn min(mut self) -> Option<&'a K>
where
&'a K: Ord,
{
self.next()
}
fn max(mut self) -> Option<&'a K> {
fn max(mut self) -> Option<&'a K>
where
&'a K: Ord,
{
self.next_back()
}
}
@@ -2008,11 +2026,17 @@ fn last(mut self) -> Option<(&'a K, &'a V)> {
self.next_back()
}
fn min(mut self) -> Option<(&'a K, &'a V)> {
fn min(mut self) -> Option<(&'a K, &'a V)>
where
(&'a K, &'a V): Ord,
{
self.next()
}
fn max(mut self) -> Option<(&'a K, &'a V)> {
fn max(mut self) -> Option<(&'a K, &'a V)>
where
(&'a K, &'a V): Ord,
{
self.next_back()
}
}
@@ -2081,11 +2105,17 @@ fn last(mut self) -> Option<K> {
self.next_back()
}
fn min(mut self) -> Option<K> {
fn min(mut self) -> Option<K>
where
K: Ord,
{
self.next()
}
fn max(mut self) -> Option<K> {
fn max(mut self) -> Option<K>
where
K: Ord,
{
self.next_back()
}
}
@@ -2204,11 +2234,17 @@ fn last(mut self) -> Option<(&'a K, &'a mut V)> {
self.next_back()
}
fn min(mut self) -> Option<(&'a K, &'a mut V)> {
fn min(mut self) -> Option<(&'a K, &'a mut V)>
where
(&'a K, &'a mut V): Ord,
{
self.next()
}
fn max(mut self) -> Option<(&'a K, &'a mut V)> {
fn max(mut self) -> Option<(&'a K, &'a mut V)>
where
(&'a K, &'a mut V): Ord,
{
self.next_back()
}
}
+16 -4
View File
@@ -1501,11 +1501,17 @@ fn last(mut self) -> Option<&'a T> {
self.next_back()
}
fn min(mut self) -> Option<&'a T> {
fn min(mut self) -> Option<&'a T>
where
&'a T: Ord,
{
self.next()
}
fn max(mut self) -> Option<&'a T> {
fn max(mut self) -> Option<&'a T>
where
&'a T: Ord,
{
self.next_back()
}
}
@@ -1604,11 +1610,17 @@ fn last(mut self) -> Option<&'a T> {
self.next_back()
}
fn min(mut self) -> Option<&'a T> {
fn min(mut self) -> Option<&'a T>
where
&'a T: Ord,
{
self.next()
}
fn max(mut self) -> Option<&'a T> {
fn max(mut self) -> Option<&'a T>
where
&'a T: Ord,
{
self.next_back()
}
}
@@ -2815,7 +2815,7 @@ fn extend<I: IntoIterator<Item = &'a T>>(&mut self, iter: I) {
}
#[inline]
fn extend_one(&mut self, &elem: &T) {
fn extend_one(&mut self, &elem: &'a T) {
self.push_back(elem);
}
+2 -2
View File
@@ -248,7 +248,7 @@ fn borrow_mut(&mut self) -> &mut [T] {
impl<'a, T, const N: usize> TryFrom<&'a [T]> for &'a [T; N] {
type Error = TryFromSliceError;
fn try_from(slice: &[T]) -> Result<&[T; N], TryFromSliceError> {
fn try_from(slice: &'a [T]) -> Result<&'a [T; N], TryFromSliceError> {
if slice.len() == N {
let ptr = slice.as_ptr() as *const [T; N];
// SAFETY: ok because we just checked that the length fits
@@ -275,7 +275,7 @@ fn borrow_mut(&mut self) -> &mut [T] {
impl<'a, T, const N: usize> TryFrom<&'a mut [T]> for &'a mut [T; N] {
type Error = TryFromSliceError;
fn try_from(slice: &mut [T]) -> Result<&mut [T; N], TryFromSliceError> {
fn try_from(slice: &'a mut [T]) -> Result<&'a mut [T; N], TryFromSliceError> {
if slice.len() == N {
let ptr = slice.as_mut_ptr() as *mut [T; N];
// SAFETY: ok because we just checked that the length fits
+16 -4
View File
@@ -732,12 +732,18 @@ fn last(mut self) -> Option<A> {
}
#[inline]
fn min(mut self) -> Option<A> {
fn min(mut self) -> Option<A>
where
A: Ord,
{
self.next()
}
#[inline]
fn max(mut self) -> Option<A> {
fn max(mut self) -> Option<A>
where
A: Ord,
{
self.next_back()
}
@@ -1158,12 +1164,18 @@ fn last(mut self) -> Option<A> {
}
#[inline]
fn min(mut self) -> Option<A> {
fn min(mut self) -> Option<A>
where
A: Ord,
{
self.next()
}
#[inline]
fn max(mut self) -> Option<A> {
fn max(mut self) -> Option<A>
where
A: Ord,
{
self.next_back()
}
@@ -71,7 +71,7 @@ impl<'lhs, 'rhs, T, const LANES: usize> $trait<&'rhs $simd> for &'lhs $simd
#[inline]
#[must_use = "operator returns a new vector without mutating the inputs"]
fn $call(self, rhs: &$simd) -> Self::Output {
fn $call(self, rhs: &'rhs $simd) -> Self::Output {
(*self).$call(*rhs)
}
}