11//! Types dealing with ranges of values
2+ //!
3+ //! # Macros
4+ //!
5+ //! The `quote!` macro can make it easier to create ranges. It roughly mirrors
6+ //! traditional mathematic range syntax.
7+ //!
8+ //! # Note
9+ //!
10+ //! The `Range`, `RangeBound`, `Inclusive`, and `Exclusive` types must be
11+ //! directly usable at the location the macro is used.
12+ //!
13+ //! ```rust
14+ //! #[feature(phase)];
15+ //!
16+ //! #[phase(syntax, link)]
17+ //! extern mod postgres;
18+ //!
19+ //! use postgres::types::range::{Range, RangeBound, Inclusive, Exclusive};
20+ //!
21+ //! fn main() {
22+ //! # let mut r: Range<i32>;
23+ //! // a closed interval
24+ //! r = range!('[' 5i32, 10i32 ']');
25+ //! // an open interval
26+ //! r = range!('(' 5i32, 10i32 ')');
27+ //! // half-open intervals
28+ //! r = range!('(' 5i32, 10i32 ']');
29+ //! r = range!('[' 5i32, 10i32 ')');
30+ //! // a closed lower-bounded interval
31+ //! r = range!('[' 5i32, ')');
32+ //! // an open lower-bounded interval
33+ //! r = range!('(' 5i32, ')');
34+ //! // a closed upper-bounded interval
35+ //! r = range!('(', 10i32 ']');
36+ //! // an open upper-bounded interval
37+ //! r = range!('(', 10i32 ')');
38+ //! // an unbounded interval
39+ //! r = range!('(', ')');
40+ //! // an empty interval
41+ //! r = range!(empty);
42+ //! }
243#[ macro_escape] ;
344
445extern mod extra;
@@ -8,6 +49,7 @@ use std::i32;
849use std:: i64;
950use extra:: time:: Timespec ;
1051
52+ #[ macro_export]
1153macro_rules! range(
1254 ( empty) => ( Range :: empty( ) ) ;
1355 ( '(' , ')' ) => ( Range :: new( None , None ) ) ;
0 commit comments