pub fn info_pos(&self) -> (usize, usize, usize) {
        fn compute<P: FilePos>(pos_start: P, pos_end: P) -> (usize, usize, usize) {
            let (line, start_minus1, bol) = pos_start.line_column_beg();
            let start = start_minus1 + 1;
            let end_offset = pos_end.offset();
            let mut end = end_offset - bol;
            // To represent the empty interval, pos_start and pos_end are equal because
            // end_offset is exclusive. Here, it's best for error messages to the user if
            // we print characters N to N (highlighting a single character) rather than characters
            // N to (N-1), which is very unintuitive.
            if start == end + 1 {
                end = start
            }
            (line, start, end)
        }
        match self.0 {
            Small { start, end, .. } => compute(start, end),
            Large { start, end, .. } => compute(*start, *end),
        }
    }
/// Returns a closed interval that's incorrect for multi-line spans.
Returns a closed interval that's incorrect for multi-line spans.
Returns a closed interval that ' s incorrect for multi - line spans .
pub fn info_pos(&self) -> (usize, usize, usize) {
        fn compute<P: FilePos>(pos_start: P, pos_end: P) -> (usize, usize, usize) {
            let (line, start_minus1, bol) = pos_start.line_column_beg();
            let start = start_minus1 + 1;
            let end_offset = pos_end.offset();
            let mut end = end_offset - bol;
            // To represent the empty interval, pos_start and pos_end are equal because
            // end_offset is exclusive. Here, it's best for error messages to the user if
            // we print characters N to N (highlighting a single character) rather than characters
            // N to (N-1), which is very unintuitive.
            if start == end + 1 {
                end = start
            }
            (line, start, end)
        }
        match self.0 {
            Small { start, end, .. } => compute(start, end),
            Large { start, end, .. } => compute(*start, *end),
        }
    }
pub fn info_pos ( & self ) -> ( usize , usize , usize ) { fn compute < P : FilePos > ( pos_start : P , pos_end : P ) -> ( usize , usize , usize ) { let ( line , start_minus1 , bol ) = pos_start . line_column_beg ( ) ; let start = start_minus1 + 1 ; let end_offset = pos_end . offset ( ) ; let mut end = end_offset - bol ; // To represent the empty interval, pos_start and pos_end are equal because // end_offset is exclusive. Here, it's best for error messages to the user if // we print characters N to N (highlighting a single character) rather than characters // N to (N-1), which is very unintuitive. if start == end + 1 { end = start } ( line , start , end ) } match self . 0 { Small { start , end , .. } => compute ( start , end ) , Large { start , end , .. } => compute ( * start , * end ) , } }
Returns a closed interval that's incorrect for multi-line spans.
Returns a closed interval that ' s incorrect for multi - line spans .
&self