pub struct PageRange(_);
Expand description

A range of Pages that are contiguous in virtual memory.

Implementations§

Creates a new range of Pages that spans from start to end, both inclusive bounds.

Creates a PageRange that will always yield None when iterated.

A convenience method for creating a new PageRange that spans all Pages from the given VirtualAddress to an end bound based on the given size.

Returns the VirtualAddress of the starting Page in this PageRange.

Returns the number of Pages covered by this iterator.

Use this instead of Iterator::count() method. This is instant, because it doesn’t need to iterate over each entry, unlike normal iterators.

Returns the size of this range in number of bytes.

Returns true if this PageRange contains the given VirtualAddress.

Returns the offset of the given VirtualAddress within this PageRange, i.e., addr - self.start_address().

If the given addr is not covered by this range of Pages, this returns None.

Examples

If the range covers addresses 0x2000 to 0x4000, then offset_of_address(0x3500) would return Some(0x1500).

Returns the VirtualAddress at the given offset into this PageRangewithin this PageRange, i.e., addr - self.start_address().

If the given offset is not within this range of Pages, this returns None.

Examples

If the range covers addresses 0x2000 to 0x4000, then address_at_offset(0x1500) would return Some(0x3500).

Returns a new separate PageRange that is extended to include the given Page.

Returns an inclusive PageRange representing the Pages that overlap across this PageRange and the given other PageRange.

If there is no overlap between the two ranges, None is returned.

Methods from Deref<Target = RangeInclusive<Page>>§

Returns the lower bound of the range (inclusive).

When using an inclusive range for iteration, the values of start() and end() are unspecified after the iteration ended. To determine whether the inclusive range is empty, use the is_empty() method instead of comparing start() > end().

Note: the value returned by this method is unspecified after the range has been iterated to exhaustion.

Examples
assert_eq!((3..=5).start(), &3);

Returns the upper bound of the range (inclusive).

When using an inclusive range for iteration, the values of start() and end() are unspecified after the iteration ended. To determine whether the inclusive range is empty, use the is_empty() method instead of comparing start() > end().

Note: the value returned by this method is unspecified after the range has been iterated to exhaustion.

Examples
assert_eq!((3..=5).end(), &5);

Returns true if item is contained in the range.

Examples
assert!(!(3..=5).contains(&2));
assert!( (3..=5).contains(&3));
assert!( (3..=5).contains(&4));
assert!( (3..=5).contains(&5));
assert!(!(3..=5).contains(&6));

assert!( (3..=3).contains(&3));
assert!(!(3..=2).contains(&3));

assert!( (0.0..=1.0).contains(&1.0));
assert!(!(0.0..=1.0).contains(&f32::NAN));
assert!(!(0.0..=f32::NAN).contains(&0.0));
assert!(!(f32::NAN..=1.0).contains(&1.0));

This method always returns false after iteration has finished:

let mut r = 3..=5;
assert!(r.contains(&3) && r.contains(&5));
for _ in r.by_ref() {}
// Precise field values are unspecified here
assert!(!r.contains(&3) && !r.contains(&5));

Returns true if the range contains no items.

Examples
assert!(!(3..=5).is_empty());
assert!(!(3..=3).is_empty());
assert!( (3..=2).is_empty());

The range is empty if either side is incomparable:

assert!(!(3.0..=5.0).is_empty());
assert!( (3.0..=f32::NAN).is_empty());
assert!( (f32::NAN..=5.0).is_empty());

This method returns true after iteration has finished:

let mut r = 3..=5;
for _ in r.by_ref() {}
// Precise field values are unspecified here
assert!(r.is_empty());

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
The resulting type after dereferencing.
Dereferences the value.
Mutably dereferences the value.
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.