Add new section on trait bounds.
This commit is contained in:
1 parent
2477f72adc
commit
453d8030e5
32 files changed
+182
-21
No files matched your search
@@ -0,0 +1,4 @@
|
||||
[package]
|
||||
name = "outro_03"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
@@ -0,0 +1,10 @@
|
||||
// TODO: Define a new `SaturatingU16` type.
|
||||
// It should hold a `u16` value.
|
||||
// It should provide conversions from `u16`, `u8`, `&u16` and `&u8`.
|
||||
// It should support addition with a right-hand side of type
|
||||
// SaturatingU16, u16, &u16, and &SaturatingU16. Addition should saturate at the
|
||||
// maximum value for `u16`.
|
||||
// It should be possible to compare it with another `SaturatingU16` or a `u16`.
|
||||
// It should be possible to print its debug representation.
|
||||
//
|
||||
// Tests are located in the `tests` folder—pay attention to the visibility of your types and methods.
|
||||
@@ -0,0 +1,16 @@
|
||||
use outro_03::SaturatingU16;
|
||||
|
||||
#[test]
|
||||
fn test_saturating_u16() {
|
||||
let a: SaturatingU16 = (&10u8).into();
|
||||
let b: SaturatingU16 = 5u8.into();
|
||||
let c: SaturatingU16 = u16::MAX.into();
|
||||
let d: SaturatingU16 = (&1u16).into();
|
||||
|
||||
assert_eq!(a + b, SaturatingU16::from(15u16));
|
||||
assert_eq!(a + c, SaturatingU16::from(u16::MAX));
|
||||
assert_eq!(a + d, SaturatingU16::from(11u16));
|
||||
assert_eq!(a + a, 20u16);
|
||||
assert_eq!(a + 5u16, 15u16);
|
||||
assert_eq!(a + &u16::MAX, SaturatingU16::from(u16::MAX));
|
||||
}
|
||||
Reference in new issue
Block a user