diff options
| author | Scott McMurray <scottmcm@users.noreply.github.com> | 2017-04-23 21:14:32 -0700 |
|---|---|---|
| committer | Scott McMurray <scottmcm@users.noreply.github.com> | 2017-05-21 01:48:03 -0700 |
| commit | f166bd9857dac3c66e812ba6bc33e59494c3fef2 (patch) | |
| tree | d29f84b35bd2428ade46b8282c69f593a9f8645b /src/libcore/tests | |
| parent | 0bd9e1f5e6e9832691d033f1cc32409f5e2a9145 (diff) | |
| download | rust-f166bd9857dac3c66e812ba6bc33e59494c3fef2.tar.gz rust-f166bd9857dac3c66e812ba6bc33e59494c3fef2.zip | |
Make RangeInclusive just a two-field struct
Not being an enum improves ergonomics, especially since NonEmpty could be Empty. It can still be iterable without an extra "done" bit by making the range have !(start <= end), which is even possible without changing the Step trait. Implements RFC 1980
Diffstat (limited to 'src/libcore/tests')
| -rw-r--r-- | src/libcore/tests/lib.rs | 1 | ||||
| -rw-r--r-- | src/libcore/tests/ops.rs | 18 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/libcore/tests/lib.rs b/src/libcore/tests/lib.rs index c52155ead4f..8c4cd1d0c84 100644 --- a/src/libcore/tests/lib.rs +++ b/src/libcore/tests/lib.rs @@ -22,6 +22,7 @@ #![feature(fmt_internals)] #![feature(iterator_step_by)] #![feature(i128_type)] +#![feature(inclusive_range)] #![feature(iter_rfind)] #![feature(libc)] #![feature(nonzero)] diff --git a/src/libcore/tests/ops.rs b/src/libcore/tests/ops.rs index 1c6c13b0d02..50aed15896c 100644 --- a/src/libcore/tests/ops.rs +++ b/src/libcore/tests/ops.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use core::ops::{Range, RangeFull, RangeFrom, RangeTo}; +use core::ops::{Range, RangeFull, RangeFrom, RangeTo, RangeInclusive}; // Test the Range structs without the syntactic sugar. @@ -47,3 +47,19 @@ fn test_full_range() { // Not much to test. let _ = RangeFull; } + +#[test] +fn test_range_inclusive() { + let mut r = RangeInclusive { start: 1i8, end: 2 }; + assert_eq!(r.next(), Some(1)); + assert_eq!(r.next(), Some(2)); + assert_eq!(r.next(), None); + + r = RangeInclusive { start: 127i8, end: 127 }; + assert_eq!(r.next(), Some(127)); + assert_eq!(r.next(), None); + + r = RangeInclusive { start: -128i8, end: -128 }; + assert_eq!(r.next_back(), Some(-128)); + assert_eq!(r.next_back(), None); +} \ No newline at end of file |
