@@ -201,10 +201,10 @@ pub trait BitFlag: Copy + Clone + 'static + _internal::RawBitFlags {
201
201
///
202
202
/// use enumflags2::BitFlag;
203
203
///
204
- /// let from_bits = MyFlag::from_bits(0b11).unwrap();
205
- /// assert_eq!(from_bits .contains(MyFlag::One), true);
206
- /// assert_eq!(from_bits .contains(MyFlag::Two), true);
207
- /// assert_eq!(from_bits .contains(MyFlag::Three), false);
204
+ /// let flags = MyFlag::from_bits(0b11).unwrap();
205
+ /// assert_eq!(flags .contains(MyFlag::One), true);
206
+ /// assert_eq!(flags .contains(MyFlag::Two), true);
207
+ /// assert_eq!(flags .contains(MyFlag::Three), false);
208
208
/// let invalid = MyFlag::from_bits(1 << 3);
209
209
/// assert!(invalid.is_err());
210
210
/// ```
@@ -233,10 +233,10 @@ pub trait BitFlag: Copy + Clone + 'static + _internal::RawBitFlags {
233
233
///
234
234
/// use enumflags2::BitFlag;
235
235
///
236
- /// let from_bits = MyFlag::from_bits_truncate(0b1_1011);
237
- /// assert_eq!(from_bits .contains(MyFlag::One), true);
238
- /// assert_eq!(from_bits .contains(MyFlag::Two), true);
239
- /// assert_eq!(from_bits .contains(MyFlag::Three), false);
236
+ /// let flags = MyFlag::from_bits_truncate(0b1_1011);
237
+ /// assert_eq!(flags .contains(MyFlag::One), true);
238
+ /// assert_eq!(flags .contains(MyFlag::Two), true);
239
+ /// assert_eq!(flags .contains(MyFlag::Three), false);
240
240
/// ```
241
241
#[ inline]
242
242
fn from_bits_truncate ( bits : Self :: Numeric ) -> BitFlags < Self > {
@@ -249,6 +249,11 @@ pub trait BitFlag: Copy + Clone + 'static + _internal::RawBitFlags {
249
249
/// Consider using [`from_bits`][BitFlag::from_bits]
250
250
/// or [`from_bits_truncate`][BitFlag::from_bits_truncate] instead.
251
251
///
252
+ /// # Safety
253
+ ///
254
+ /// All bits set in `val` must correspond to a value of the enum.
255
+ ///
256
+ /// # Example
252
257
///
253
258
/// This is a convenience reexport of [`BitFlags::from_bits_unchecked`]. It can be
254
259
/// called with `MyFlag::from_bits_unchecked(bits)`, thus bypassing the need for
@@ -267,18 +272,14 @@ pub trait BitFlag: Copy + Clone + 'static + _internal::RawBitFlags {
267
272
///
268
273
/// use enumflags2::BitFlag;
269
274
///
270
- /// let from_bits = unsafe {
275
+ /// let flags = unsafe {
271
276
/// MyFlag::from_bits_unchecked(0b011)
272
277
/// };
273
278
///
274
- /// assert_eq!(from_bits .contains(MyFlag::One), true);
275
- /// assert_eq!(from_bits .contains(MyFlag::Two), true);
276
- /// assert_eq!(from_bits .contains(MyFlag::Three), false);
279
+ /// assert_eq!(flags .contains(MyFlag::One), true);
280
+ /// assert_eq!(flags .contains(MyFlag::Two), true);
281
+ /// assert_eq!(flags .contains(MyFlag::Three), false);
277
282
/// ```
278
- ///
279
- /// # Safety
280
- ///
281
- /// All bits set in `val` must correspond to a value of the enum.
282
283
#[ inline]
283
284
unsafe fn from_bits_unchecked ( bits : Self :: Numeric ) -> BitFlags < Self > {
284
285
BitFlags :: from_bits_unchecked ( bits)
@@ -558,8 +559,30 @@ impl<T> BitFlags<T>
558
559
where
559
560
T : BitFlag ,
560
561
{
561
- /// Returns a `BitFlags<T> ` if the raw value provided does not contain
562
+ /// Create a `BitFlags` if the raw value provided does not contain
562
563
/// any illegal flags.
564
+ ///
565
+ /// See also: [a convenience re-export in the `BitFlag` trait][BitFlag::from_bits],
566
+ /// which can help avoid the need for type hints.
567
+ ///
568
+ /// ```
569
+ /// # use enumflags2::{bitflags, BitFlags};
570
+ /// #[bitflags]
571
+ /// #[repr(u8)]
572
+ /// #[derive(Clone, Copy, PartialEq, Eq, Debug)]
573
+ /// enum MyFlag {
574
+ /// One = 1 << 0,
575
+ /// Two = 1 << 1,
576
+ /// Three = 1 << 2,
577
+ /// }
578
+ ///
579
+ /// let flags: BitFlags<MyFlag> = BitFlags::from_bits(0b11).unwrap();
580
+ /// assert_eq!(flags.contains(MyFlag::One), true);
581
+ /// assert_eq!(flags.contains(MyFlag::Two), true);
582
+ /// assert_eq!(flags.contains(MyFlag::Three), false);
583
+ /// let invalid = BitFlags::<MyFlag>::from_bits(1 << 3);
584
+ /// assert!(invalid.is_err());
585
+ /// ```
563
586
#[ inline]
564
587
pub fn from_bits ( bits : T :: Numeric ) -> Result < Self , FromBitsError < T > > {
565
588
let flags = Self :: from_bits_truncate ( bits) ;
@@ -573,8 +596,28 @@ where
573
596
}
574
597
}
575
598
576
- /// Create a `BitFlags<T> ` from an underlying bitwise value. If any
599
+ /// Create a `BitFlags` from an underlying bitwise value. If any
577
600
/// invalid bits are set, ignore them.
601
+ ///
602
+ /// See also: [a convenience re-export in the `BitFlag` trait][BitFlag::from_bits_truncate],
603
+ /// which can help avoid the need for type hints.
604
+ ///
605
+ /// ```
606
+ /// # use enumflags2::{bitflags, BitFlags};
607
+ /// #[bitflags]
608
+ /// #[repr(u8)]
609
+ /// #[derive(Clone, Copy, PartialEq, Eq)]
610
+ /// enum MyFlag {
611
+ /// One = 1 << 0,
612
+ /// Two = 1 << 1,
613
+ /// Three = 1 << 2,
614
+ /// }
615
+ ///
616
+ /// let flags: BitFlags<MyFlag> = BitFlags::from_bits_truncate(0b1_1011);
617
+ /// assert_eq!(flags.contains(MyFlag::One), true);
618
+ /// assert_eq!(flags.contains(MyFlag::Two), true);
619
+ /// assert_eq!(flags.contains(MyFlag::Three), false);
620
+ /// ```
578
621
#[ must_use]
579
622
#[ inline( always) ]
580
623
pub fn from_bits_truncate ( bits : T :: Numeric ) -> Self {
@@ -592,6 +635,28 @@ where
592
635
/// # Safety
593
636
///
594
637
/// All bits set in `val` must correspond to a value of the enum.
638
+ ///
639
+ /// # Example
640
+ ///
641
+ /// ```
642
+ /// # use enumflags2::{bitflags, BitFlags};
643
+ /// #[bitflags]
644
+ /// #[repr(u8)]
645
+ /// #[derive(Clone, Copy, PartialEq, Eq)]
646
+ /// enum MyFlag {
647
+ /// One = 1 << 0,
648
+ /// Two = 1 << 1,
649
+ /// Three = 1 << 2,
650
+ /// }
651
+ ///
652
+ /// let flags: BitFlags<MyFlag> = unsafe {
653
+ /// BitFlags::from_bits_unchecked(0b011)
654
+ /// };
655
+ ///
656
+ /// assert_eq!(flags.contains(MyFlag::One), true);
657
+ /// assert_eq!(flags.contains(MyFlag::Two), true);
658
+ /// assert_eq!(flags.contains(MyFlag::Three), false);
659
+ /// ```
595
660
#[ must_use]
596
661
#[ inline( always) ]
597
662
pub unsafe fn from_bits_unchecked ( val : T :: Numeric ) -> Self {
0 commit comments