Struct FoldRegion

Source
pub struct FoldRegion {
    pub id: FoldRegionId,
    pub start_line: usize,
    pub end_line: usize,
    pub collapsed: bool,
}
Expand description

Collapsible range of zero-based logical lines.

The line at FoldRegion::start_line remains visible when the region is collapsed; lines through FoldRegion::end_line are hidden. Callers are responsible for constructing ranges whose end is not before their start.

§Examples

use ailloli_ui_editor::FoldRegion;

let region = FoldRegion::new(3, 6).collapsed(true);
assert!(!region.hides_line(3));
assert!(region.hides_line(4));
assert!(region.hides_line(6));

Fields§

§id: FoldRegionId

Stable identifier derived from the start and end lines.

§start_line: usize

Zero-based header line that remains visible while collapsed.

§end_line: usize

Zero-based inclusive last line hidden while collapsed.

§collapsed: bool

Whether the region currently hides its body lines.

Implementations§

Source§

impl FoldRegion

Constructs and queries fold regions.

Source

pub fn new(start_line: usize, end_line: usize) -> Self

Creates an expanded region spanning start_line..=end_line.

The inputs are stored without ordering validation. Consequently, a reversed range hides no lines and reports a hidden count of zero.

§Examples
use ailloli_ui_editor::FoldRegion;

let region = FoldRegion::new(4, 7);
assert_eq!((region.start_line, region.end_line), (4, 7));
assert!(!region.collapsed);
Source

pub fn collapsed(self, collapsed: bool) -> Self

Sets whether the region is collapsed and returns it.

§Examples
use ailloli_ui_editor::FoldRegion;

assert!(FoldRegion::new(0, 2).collapsed(true).collapsed);
Source

pub fn hides_line(self, line: usize) -> bool

Returns whether a zero-based line is hidden by this region.

The header line is never hidden and the end line is inclusive.

§Examples
use ailloli_ui_editor::FoldRegion;

let region = FoldRegion::new(5, 6).collapsed(true);
assert_eq!((region.hides_line(5), region.hides_line(6)), (false, true));
Source

pub fn hidden_line_count(self) -> usize

Returns the number of body lines in the range, whether expanded or not.

Reversed ranges return zero rather than underflowing.

§Examples
use ailloli_ui_editor::FoldRegion;

assert_eq!(FoldRegion::new(2, 5).hidden_line_count(), 3);
assert_eq!(FoldRegion::new(5, 2).hidden_line_count(), 0);

Trait Implementations§

Source§

impl Clone for FoldRegion

Source§

fn clone(&self) -> FoldRegion

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FoldRegion

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for FoldRegion

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Hash for FoldRegion

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for FoldRegion

Source§

fn eq(&self, other: &FoldRegion) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for FoldRegion

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for FoldRegion

Source§

impl Eq for FoldRegion

Source§

impl StructuralPartialEq for FoldRegion

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,