pub trait ArrayArgMinMax<T, const N: usize>: ArrayArgReduce<T, N> {
// Required methods
const fn argmax(&self) -> Option<usize>
where T: PartialOrd<T>;
const fn argmin(&self) -> Option<usize>
where T: PartialOrd<T>;
const fn argmax_by<'a, F>(&'a self, f: F) -> Option<usize>
where F: FnMut(&'a T, &'a T) -> Ordering,
T: 'a;
const fn argmin_by<'a, F>(&'a self, f: F) -> Option<usize>
where F: FnMut(&'a T, &'a T) -> Ordering,
T: 'a;
const fn argmax_by_key<'a, B, F>(&'a self, f: F) -> Option<usize>
where F: FnMut(&'a T) -> B,
B: PartialOrd,
T: 'a;
const fn argmin_by_key<'a, B, F>(&'a self, f: F) -> Option<usize>
where F: FnMut(&'a T) -> B,
B: PartialOrd,
T: 'a;
}
Required Methods§
Sourceconst fn argmax(&self) -> Option<usize>where
T: PartialOrd<T>,
const fn argmax(&self) -> Option<usize>where
T: PartialOrd<T>,
Finds the index of the maximum value in the slice.
If there are multiple maxima, only the first will have its index returned.
§Example
use array__ops::ops::*;
// v
let x = [1, 5, 5, 6, 2, -1, 0, -4, -1, 6];
let i = x.argmax().unwrap();
assert_eq!(i, 3);
Sourceconst fn argmin(&self) -> Option<usize>where
T: PartialOrd<T>,
const fn argmin(&self) -> Option<usize>where
T: PartialOrd<T>,
Finds the index of the minimum value in the slice.
If there are multiple minimums, only the first will have its index returned.
§Example
use array__ops::ops::*;
// v
let x = [1, 5, 5, 6, 2, -1, 0, -4, -1, 6];
let i = x.argmin().unwrap();
assert_eq!(i, 7);
Sourceconst fn argmax_by<'a, F>(&'a self, f: F) -> Option<usize>
const fn argmax_by<'a, F>(&'a self, f: F) -> Option<usize>
Finds the index of the maximum value in the slice, given a comparison predicate.
If there are multiple maxima, only the first will have its index returned.
§Example
use array__ops::ops::*;
// v
let x = [1, 5, 5, 6, 2, -1, 0, -4, -1, 6];
let f = Ord::cmp;
let i = x.argmax_by(f).unwrap();
assert_eq!(i, 3);
Sourceconst fn argmin_by<'a, F>(&'a self, f: F) -> Option<usize>
const fn argmin_by<'a, F>(&'a self, f: F) -> Option<usize>
Finds the index of the minimum value in the slice, given a comparison predicate.
If there are multiple minimums, only the first will have its index returned.
§Example
use array__ops::ops::*;
// v
let x = [1, 5, 5, 6, 2, -1, 0, -4, -1, 6];
let f = Ord::cmp;
let i = x.argmin_by(f).unwrap();
assert_eq!(i, 7);
Sourceconst fn argmax_by_key<'a, B, F>(&'a self, f: F) -> Option<usize>
const fn argmax_by_key<'a, B, F>(&'a self, f: F) -> Option<usize>
Finds the index of the maximum key in the slice, given a hashing function.
If there are multiple maxima, only the first will have its index returned.
§Example
use array__ops::ops::*;
// v
let x = ["1", "5", "5", "6", "2", "-1", "0", "-4", "-1", "6"];
let f = |&e| i32::from_str_radix(e, 10).unwrap();
let i = x.argmax_by_key(f).unwrap();
assert_eq!(i, 3);
Sourceconst fn argmin_by_key<'a, B, F>(&'a self, f: F) -> Option<usize>
const fn argmin_by_key<'a, B, F>(&'a self, f: F) -> Option<usize>
Finds the index of the minimum key in the slice, given a hashing function.
If there are multiple minimums, only the first will have its index returned.
§Example
use array__ops::ops::*;
// v
let x = ["1", "5", "5", "6", "2", "-1", "0", "-4", "-1", "6"];
let f = |&e| i32::from_str_radix(e, 10).unwrap();
let i = x.argmin_by_key(f).unwrap();
assert_eq!(i, 7);
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.