mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-02 11:44:28 +00:00
Remove unsafe
code from core::cmp
Instead of transmuting, use a match; the compiler has learnt how to optimize it.
This commit is contained in:
parent
c6ba7fee97
commit
2f4622a36f
@ -19,7 +19,6 @@
|
||||
|
||||
use self::Ordering::*;
|
||||
|
||||
use mem;
|
||||
use marker::Sized;
|
||||
use option::Option::{self, Some};
|
||||
|
||||
@ -119,10 +118,6 @@ pub enum Ordering {
|
||||
}
|
||||
|
||||
impl Ordering {
|
||||
unsafe fn from_i8_unchecked(v: i8) -> Ordering {
|
||||
mem::transmute(v)
|
||||
}
|
||||
|
||||
/// Reverse the `Ordering`.
|
||||
///
|
||||
/// * `Less` becomes `Greater`.
|
||||
@ -155,14 +150,10 @@ impl Ordering {
|
||||
#[inline]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn reverse(self) -> Ordering {
|
||||
unsafe {
|
||||
// this compiles really nicely (to a single instruction);
|
||||
// an explicit match has a pile of branches and
|
||||
// comparisons.
|
||||
//
|
||||
// NB. it is safe because of the explicit discriminants
|
||||
// given above.
|
||||
Ordering::from_i8_unchecked(-(self as i8))
|
||||
match self {
|
||||
Less => Greater,
|
||||
Equal => Equal,
|
||||
Greater => Less,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user