diff options
| author | bors <bors@rust-lang.org> | 2014-09-25 17:17:43 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-09-25 17:17:43 +0000 |
| commit | 3be6a2fba8bc3382df4b5a4f9391d9b2f28de9d1 (patch) | |
| tree | d7b8dfb88f021b8b280e4acd58aa51a206b02d67 /src/libcore/cmp.rs | |
| parent | 3f8da69618e9d46d209571cd73686ee0fdc994a8 (diff) | |
| parent | 29c2d3df5269a6538b23d79f56b63903e21e69f4 (diff) | |
| download | rust-3be6a2fba8bc3382df4b5a4f9391d9b2f28de9d1.tar.gz rust-3be6a2fba8bc3382df4b5a4f9391d9b2f28de9d1.zip | |
auto merge of #17482 : hoeppnertill/rust/master, r=alexcrichton
Intended to prevent each user to write his own partial_min/max, possibly differing in slight details. @sfackler encouraged to PR this on IRC. (Let's hope this works... First PR.)
Diffstat (limited to 'src/libcore/cmp.rs')
| -rw-r--r-- | src/libcore/cmp.rs | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/libcore/cmp.rs b/src/libcore/cmp.rs index b90c6daf9eb..a567eaa57d5 100644 --- a/src/libcore/cmp.rs +++ b/src/libcore/cmp.rs @@ -39,7 +39,7 @@ #![stable] -use option::{Option, Some}; +use option::{Option, Some, None}; /// Trait for values that can be compared for equality and inequality. /// @@ -268,6 +268,32 @@ pub fn max<T: Ord>(v1: T, v2: T) -> T { if v1 > v2 { v1 } else { v2 } } +/// Compare and return the minimum of two values if there is one. +/// +/// Returns the first argument if the comparison determines them to be equal. +#[inline] +#[experimental] +pub fn partial_min<T: PartialOrd>(v1: T, v2: T) -> Option<T> { + match v1.partial_cmp(&v2) { + Some(Less) | Some(Equal) => Some(v1), + Some(Greater) => Some(v2), + None => None + } +} + +/// Compare and return the maximum of two values if there is one. +/// +/// Returns the first argument if the comparison determines them to be equal. +#[inline] +#[experimental] +pub fn partial_max<T: PartialOrd>(v1: T, v2: T) -> Option<T> { + match v1.partial_cmp(&v2) { + Some(Less) => Some(v2), + Some(Equal) | Some(Greater) => Some(v1), + None => None + } +} + // Implementation of PartialEq, Eq, PartialOrd and Ord for primitive types mod impls { use cmp::{PartialOrd, Ord, PartialEq, Eq, Ordering, |
