blob: 98ba7a743ec9b74a10497316d259a5b746c87b33 [file]
#![feature(no_core)]
#![no_core]
#![feature(lang_items)]
#[lang = "sized"]
pub trait Sized {
// Empty.
}
#[lang = "fn_once"]
pub trait FnOnce<Args> {
/// The returned type after the call operator is used.
#[lang = "fn_once_output"]
type Output;
/// Performs the call operation.
extern "rust-call" fn call_once(self, args: Args) -> Self::Output;
}
pub enum Ordering {
/// An ordering where a compared value is less than another.
Less = -1,
/// An ordering where a compared value is equal to another.
Equal = 0,
/// An ordering where a compared value is greater than another.
Greater = 1,
}
pub fn max_by<T, F: FnOnce(&T, &T) -> Ordering>(v1: T, v2: T, compare: F) -> T {
match compare(&v1, &v2) {
Ordering::Less | Ordering::Equal => v2,
Ordering::Greater => v1,
}
}
pub fn min_by<T, F: FnOnce(&T, &T) -> Ordering>(v1: T, v2: T, compare: F) -> T {
match compare(&v1, &v2) {
Ordering::Less | Ordering::Equal => v1,
Ordering::Greater => v2,
}
}