Skip to content

Commit 7c2488c

Browse files
committed
implement Range
1 parent 3913009 commit 7c2488c

File tree

2 files changed

+47
-8
lines changed

2 files changed

+47
-8
lines changed

README.md

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ fn equal_example() -> Result<(), Error<u8>> {
381381
}
382382
```
383383

384-
## LessEqual
384+
## `LessEqual`
385385

386386
`LessEqual` is a type that signifies the target is less than or equal to a certain number.
387387

@@ -402,7 +402,7 @@ fn less_equal_example() -> Result<(), Error<u8>> {
402402
}
403403
```
404404

405-
## GreaterEqual
405+
## `GreaterEqual`
406406

407407
`GreaterEqual` is a type that signifies the target is greater than or equal to a certain number.
408408

@@ -423,6 +423,31 @@ fn greater_equal_example() -> Result<(), Error<u8>> {
423423
}
424424
```
425425

426+
## `Range`
427+
428+
`Range` is a type that signifies the target exists between a certain number and another number.
429+
430+
```rust
431+
type Age = RangeU8<18, 80>;
432+
433+
fn range_example() -> Result<(), Error<u8>> {
434+
let age = Age::new(17);
435+
assert!(age.is_err());
436+
437+
let age = Age::new(18)?;
438+
assert_eq!(age.into_value(), 18);
439+
440+
let age = Age::new(79)?;
441+
assert_eq!(age.into_value(), 79);
442+
443+
let age = Age::new(80);
444+
assert!(age.is_err());
445+
446+
Ok(())
447+
}
448+
```
449+
450+
426451
# Iterator
427452

428453
`refined_type` has several useful refined types for Iterators.

tests/read_me.rs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,7 @@ use serde_json::json;
33

44
use refined_type::result::Error;
55
use refined_type::rule::composer::Not;
6-
use refined_type::rule::{
7-
EqualU8, ExistsVec, ForAllVec, GreaterEqualU8, GreaterU8, HeadVec, IndexRuleVec, IndexVec,
8-
InitVec, LastVec, LengthDefinition, LengthEqual, LengthEqualRule, LengthGreater, LengthLess,
9-
LengthMinMax, LessEqualU8, LessU8, MinMaxU8, NonEmptyString, NonEmptyStringRule, NonEmptyVec,
10-
NonEmptyVecDeque, Reverse, Rule, SkipFirst, SkipVec, TailVec,
11-
};
6+
use refined_type::rule::{EqualU8, ExistsVec, ForAllVec, GreaterEqualU8, GreaterU8, HeadVec, IndexRuleVec, IndexVec, InitVec, LastVec, LengthDefinition, LengthEqual, LengthEqualRule, LengthGreater, LengthLess, LengthMinMax, LessEqualU8, LessU8, MinMaxU8, NonEmptyString, NonEmptyStringRule, NonEmptyVec, NonEmptyVecDeque, RangeU8, Reverse, Rule, SkipFirst, SkipVec, TailVec};
127
use refined_type::{And, Or, Refined};
138

149
// define a struct for converting from JSON.
@@ -344,6 +339,25 @@ fn greater_equal_example() -> Result<(), Error<u8>> {
344339
Ok(())
345340
}
346341

342+
#[test]
343+
fn range_example() -> Result<(), Error<u8>> {
344+
type Age = RangeU8<18, 80>;
345+
346+
let age = Age::new(17);
347+
assert!(age.is_err());
348+
349+
let age = Age::new(18)?;
350+
assert_eq!(age.into_value(), 18);
351+
352+
let age = Age::new(79)?;
353+
assert_eq!(age.into_value(), 79);
354+
355+
let age = Age::new(80);
356+
assert!(age.is_err());
357+
358+
Ok(())
359+
}
360+
347361
#[test]
348362
fn example_11() -> Result<(), Error<Vec<String>>> {
349363
let vec = vec!["Hello".to_string(), "World".to_string()];

0 commit comments

Comments
 (0)