Struct Border

Source
pub struct Border {
Show 13 fields pub top: &'static str, pub bottom: &'static str, pub left: &'static str, pub right: &'static str, pub top_left: &'static str, pub top_right: &'static str, pub bottom_left: &'static str, pub bottom_right: &'static str, pub middle_left: &'static str, pub middle_right: &'static str, pub middle: &'static str, pub middle_top: &'static str, pub middle_bottom: &'static str,
}
Expand description

Defines all the glyphs that make up a box border for terminal user interfaces.

A Border contains all the Unicode characters needed to draw complete box borders, including corners, edges, and junction characters for complex layouts like tables. This struct mirrors the Go Lip Gloss Border type, providing the same visual styling capabilities in Rust.

§Examples

use lipgloss::Border;

// Create a custom border using ASCII characters
let custom_border = Border::new(
    "-", "-", "|", "|", "+", "+", "+", "+",
    "+", "+", "+", "+", "+",
);

// Or use one of the predefined borders
let normal = lipgloss::normal_border();
let rounded = lipgloss::rounded_border();

Fields§

§top: &'static str

Character used for the top edge of the border

§bottom: &'static str

Character used for the bottom edge of the border

§left: &'static str

Character used for the left edge of the border

§right: &'static str

Character used for the right edge of the border

§top_left: &'static str

Character used for the top-left corner of the border

§top_right: &'static str

Character used for the top-right corner of the border

§bottom_left: &'static str

Character used for the bottom-left corner of the border

§bottom_right: &'static str

Character used for the bottom-right corner of the border

§middle_left: &'static str

Character used for left-side junction points (for table borders)

§middle_right: &'static str

Character used for right-side junction points (for table borders)

§middle: &'static str

Character used for cross junction points (for table borders)

§middle_top: &'static str

Character used for top junction points (for table borders)

§middle_bottom: &'static str

Character used for bottom junction points (for table borders)

Implementations§

Source§

impl Border

Source

pub const fn new( top: &'static str, bottom: &'static str, left: &'static str, right: &'static str, top_left: &'static str, top_right: &'static str, bottom_left: &'static str, bottom_right: &'static str, middle_left: &'static str, middle_right: &'static str, middle: &'static str, middle_top: &'static str, middle_bottom: &'static str, ) -> Self

Creates a new Border with custom characters for all border elements.

This constructor allows you to define a completely custom border style by specifying characters for each part of the border: edges, corners, and junction points for table rendering. All parameters must be &'static str to ensure the border can be used in const contexts and has a static lifetime.

The junction parameters (middle_*) are primarily used for table rendering where borders need to connect at intersection points. For simple box borders, these can be set to the same values as corners or left empty.

§Arguments
  • top - Character(s) for the top edge
  • bottom - Character(s) for the bottom edge
  • left - Character(s) for the left edge
  • right - Character(s) for the right edge
  • top_left - Character(s) for the top-left corner
  • top_right - Character(s) for the top-right corner
  • bottom_left - Character(s) for the bottom-left corner
  • bottom_right - Character(s) for the bottom-right corner
  • middle_left - Character(s) for left junction points (table borders)
  • middle_right - Character(s) for right junction points (table borders)
  • middle - Character(s) for cross junction points (table borders)
  • middle_top - Character(s) for top junction points (table borders)
  • middle_bottom - Character(s) for bottom junction points (table borders)
§Examples
use lipgloss::Border;

// Create a simple ASCII border
let ascii_border = Border::new(
    "-", "-", "|", "|", "+", "+", "+", "+",
    "+", "+", "+", "+", "+",
);

// Create a Unicode box-drawing border
let unicode_border = Border::new(
    "─", "─", "│", "│", "┌", "┐", "└", "┘",
    "├", "┤", "┼", "┬", "┴",
);

// Create a decorative border with multi-character components
let decorative = Border::new(
    "═══", "═══", "║", "║", "╔", "╗", "╚", "╝",
    "╠", "╣", "╬", "╦", "╩",
);
Source

pub fn get_top_size(&self) -> usize

Returns the maximum character width of the top edge components.

This method calculates the visual width needed for the top edge of the border by finding the maximum width among the top-left corner, top edge, and top-right corner characters. This is important for proper alignment when working with Unicode characters that may have different display widths.

§Returns

The maximum character width in terminal columns needed for the top edge.

§Examples
use lipgloss::{normal_border, Border};

let border = normal_border();
assert_eq!(border.get_top_size(), 1);

// Wide Unicode character example
let wide_border = Border::new(
    "太", "-", "|", "|", "+", "+", "+", "+",
    "+", "+", "+", "+", "+",
);
assert!(wide_border.get_top_size() >= 2);
Source

pub fn get_right_size(&self) -> usize

Returns the maximum character width of the right edge components.

This method calculates the visual width needed for the right edge of the border by finding the maximum width among the top-right corner, right edge, and bottom-right corner characters.

§Returns

The maximum character width in terminal columns needed for the right edge.

§Examples
use lipgloss::normal_border;

let border = normal_border();
assert_eq!(border.get_right_size(), 1);
Source

pub fn get_bottom_size(&self) -> usize

Returns the maximum character width of the bottom edge components.

This method calculates the visual width needed for the bottom edge of the border by finding the maximum width among the bottom-left corner, bottom edge, and bottom-right corner characters.

§Returns

The maximum character width in terminal columns needed for the bottom edge.

§Examples
use lipgloss::normal_border;

let border = normal_border();
assert_eq!(border.get_bottom_size(), 1);
Source

pub fn get_left_size(&self) -> usize

Returns the maximum character width of the left edge components.

This method calculates the visual width needed for the left edge of the border by finding the maximum width among the top-left corner, left edge, and bottom-left corner characters.

§Returns

The maximum character width in terminal columns needed for the left edge.

§Examples
use lipgloss::normal_border;

let border = normal_border();
assert_eq!(border.get_left_size(), 1);

Trait Implementations§

Source§

impl Clone for Border

Source§

fn clone(&self) -> Border

Returns a duplicate 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 Border

Source§

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

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

impl PartialEq for Border

Source§

fn eq(&self, other: &Border) -> 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 Copy for Border

Source§

impl Eq for Border

Source§

impl StructuralPartialEq for Border

Auto Trait Implementations§

§

impl Freeze for Border

§

impl RefUnwindSafe for Border

§

impl Send for Border

§

impl Sync for Border

§

impl Unpin for Border

§

impl UnwindSafe for Border

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

Source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
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, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
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
Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
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, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
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, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. 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, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.