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 strCharacter used for the top edge of the border
bottom: &'static strCharacter used for the bottom edge of the border
left: &'static strCharacter used for the left edge of the border
right: &'static strCharacter used for the right edge of the border
top_left: &'static strCharacter used for the top-left corner of the border
top_right: &'static strCharacter used for the top-right corner of the border
bottom_left: &'static strCharacter used for the bottom-left corner of the border
bottom_right: &'static strCharacter used for the bottom-right corner of the border
middle_left: &'static strCharacter used for left-side junction points (for table borders)
middle_right: &'static strCharacter used for right-side junction points (for table borders)
middle: &'static strCharacter used for cross junction points (for table borders)
middle_top: &'static strCharacter used for top junction points (for table borders)
middle_bottom: &'static strCharacter used for bottom junction points (for table borders)
Implementations§
Source§impl Border
impl Border
Sourcepub 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
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 edgebottom- Character(s) for the bottom edgeleft- Character(s) for the left edgeright- Character(s) for the right edgetop_left- Character(s) for the top-left cornertop_right- Character(s) for the top-right cornerbottom_left- Character(s) for the bottom-left cornerbottom_right- Character(s) for the bottom-right cornermiddle_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(
"═══", "═══", "║", "║", "╔", "╗", "╚", "╝",
"╠", "╣", "╬", "╦", "╩",
);Sourcepub fn get_top_size(&self) -> usize
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);Sourcepub fn get_right_size(&self) -> usize
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);Sourcepub fn get_bottom_size(&self) -> usize
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);Sourcepub fn get_left_size(&self) -> usize
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§
impl Copy for Border
impl Eq for Border
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 Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
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) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more