Ce face Ord::clamp
x.clamp(min, max) returnează x dacă este în interval, min dacă este mai mic și max dacă este mai mare. Înlocuiește combinația x.max(min).min(max) și se citește mai ușor.
Dacă min > max, programul se oprește cu panică. Pentru f64 există metoda proprie f64::clamp, cu aceeași regulă.
Parametri
| Parametru | Descriere |
|---|---|
min |
Limita de jos. |
max |
Limita de sus (trebuie să fie ≥ min). |
Ce returnează
Valoarea limitată, de același tip.
Exemple
Exemplul 1: Note între 1 și 10
fn main() {
for nota in [-2, 0, 7, 10, 14] {
println!("{nota:>3} -> {}", nota.clamp(1, 10));
}
}
Rezultat
-2 -> 1
0 -> 1
7 -> 7
10 -> 10
14 -> 10
Exemplul 2: Volum, pagini și litere
fn main() {
let volum: u8 = 130;
println!("volum: {}", volum.clamp(0, 100));
let total_pagini = 12;
let ceruta = 40;
println!("pagina: {}", ceruta.clamp(1, total_pagini));
println!("{}", 'z'.clamp('a', 'm'));
println!("{}", 21.7_f64.clamp(18.0, 21.0));
}
Rezultat
volum: 100
pagina: 12
m
21
Greșeli frecvente
- Inversezi limitele:
x.clamp(10, 1)dă panică (min > max. min = 10, max = 1).