diff --git a/corelib/src/ops/range.cairo b/corelib/src/ops/range.cairo index 80a8bbe13df..55859544317 100644 --- a/corelib/src/ops/range.cairo +++ b/corelib/src/ops/range.cairo @@ -11,6 +11,22 @@ pub struct Range { pub end: T, } +impl RangeDebug> of crate::fmt::Debug> { + /// Formats a `Range` type, allowing to print `Range` instances for debugging purposes. + /// + /// # Examples + /// + /// ``` + /// println!("{:?}", 1..5); // Result will be `1..5` + /// ``` + fn fmt(self: @Range, ref f: crate::fmt::Formatter) -> Result<(), crate::fmt::Error> { + self.start.fmt(ref f)?; + write!(f, "..")?; + self.end.fmt(ref f)?; + Result::Ok(()) + } +} + /// Handles the range operator (`..`). #[generate_trait] pub impl RangeOpImpl of RangeOp { diff --git a/corelib/src/test.cairo b/corelib/src/test.cairo index b7fa57ea55d..1bd70bfb71f 100644 --- a/corelib/src/test.cairo +++ b/corelib/src/test.cairo @@ -20,6 +20,7 @@ mod num_test; mod option_test; mod plugins_test; mod print_test; +mod range_test; mod result_test; mod secp256k1_test; mod secp256r1_test; diff --git a/corelib/src/test/range_test.cairo b/corelib/src/test/range_test.cairo new file mode 100644 index 00000000000..b2fc6f217cf --- /dev/null +++ b/corelib/src/test/range_test.cairo @@ -0,0 +1,4 @@ +#[test] +fn test_range_format() { + assert!(format!("{:?}", 1..5) == "1..5"); +}