pub struct TextRange { /* private fields */ }Expand description
A range in the source text [start, end), represented as byte offsets.
Stores only offsets.
Implementations§
Source§impl TextRange
impl TextRange
Sourcepub const fn new(start: TextSize, end: TextSize) -> Self
pub const fn new(start: TextSize, end: TextSize) -> Self
Creates a new range from start (inclusive) and end (exclusive) offsets.
Sourcepub const fn contains(self, offset: TextSize) -> bool
pub const fn contains(self, offset: TextSize) -> bool
Whether offset is contained in this range.
Sourcepub const fn from_offset_len(offset: usize, len: usize) -> Self
pub const fn from_offset_len(offset: usize, len: usize) -> Self
Creates a range from an absolute byte offset and a length.
Sourcepub fn source_text<'a>(&self, source: &'a str) -> &'a str
pub fn source_text<'a>(&self, source: &'a str) -> &'a str
Extracts the corresponding slice from the source text.
Returns an empty string if the range is empty, out of bounds, inverted, or if an endpoint falls inside a multi-byte character.
The bounds check is not paranoia: a TextRange is two numbers and can
be built by hand (the Python binding exposes the constructor), so this
is reachable. Indexing a str with a range that splits a character
panics — and a panic across the FFI boundary is an abort.
Examples found in repository?
examples/parse_numpy.rs (line 49)
8fn main() {
9 let docstring = r#"
10Calculate the area of a rectangle.
11
12This function takes the width and height of a rectangle
13and returns its area.
14
15Parameters
16----------
17width : float
18 The width of the rectangle.
19height : float
20 The height of the rectangle.
21
22Returns
23-------
24float
25 The area of the rectangle.
26
27Raises
28------
29ValueError
30 If width or height is negative.
31
32Examples
33--------
34>>> calculate_area(5.0, 3.0)
3515.0
36"#;
37
38 let parsed = parse_numpy(docstring);
39 let doc = Document::new(&parsed);
40
41 println!("╔══════════════════════════════════════════════════╗");
42 println!("║ NumPy-style Docstring Example ║");
43 println!("╚══════════════════════════════════════════════════╝");
44
45 println!();
46
47 // Display: raw source text
48 println!("── raw text ────────────────────────────────────────");
49 println!("{}", doc.syntax().range().source_text(parsed.source()));
50
51 println!();
52
53 // pretty_print: structured AST
54 println!("── parsed AST ──────────────────────────────────────");
55 print!("{}", parsed.pretty_print());
56}Trait Implementations§
impl Copy for TextRange
impl Eq for TextRange
impl StructuralPartialEq for TextRange
Auto Trait Implementations§
impl Freeze for TextRange
impl RefUnwindSafe for TextRange
impl Send for TextRange
impl Sync for TextRange
impl Unpin for TextRange
impl UnsafeUnpin for TextRange
impl UnwindSafe for TextRange
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more