BoxCharsBuilder

Struct BoxCharsBuilder 

Source
pub struct BoxCharsBuilder { /* private fields */ }
Expand description

Builder for creating custom BoxChars with a fluent, type-safe API.

The builder pattern provides an ergonomic way to construct custom box characters with method chaining. All methods are const fn where possible for compile-time evaluation. The builder starts with invisible characters (NONE) and allows selective customization.

§Design Patterns

§Uniform Styling

Use the convenience methods for consistent appearance:

  • corners() - Sets all four corners to the same character
  • horizontal() - Sets top and bottom borders
  • vertical() - Sets left and right borders

§Selective Overrides

Start with uniform styling, then override specific positions:

use cli_boxes::BoxChars;

let mixed = BoxChars::builder()
    .corners('●')           // Set all corners
    .horizontal('═')        // Set horizontal borders
    .vertical('║')          // Set vertical borders
    .top_left('╔')         // Override just top-left
    .build();

§Asymmetric Designs

Create unique, asymmetric box styles:

use cli_boxes::BoxChars;

let asymmetric = BoxChars::builder()
    .top_left('╭').top('─').top_right('╮')
    .left('│').right('│')
    .bottom_left('└').bottom('─').bottom_right('┘')
    .build();

§Theme-Based Construction

use cli_boxes::BoxChars;

fn create_theme_box(theme: &str) -> BoxChars {
    let mut builder = BoxChars::builder();
     
    match theme {
        "minimal" => builder.corners('+').horizontal('-').vertical('|'),
        "fancy" => builder.corners('●').horizontal('═').vertical('║'),
        "retro" => builder.corners('*').horizontal('=').vertical(':'),
        _ => builder.corners('?').horizontal('?').vertical('?'),
    }.build()
}

§Performance

The builder uses const fn methods where possible, allowing compile-time evaluation when used with constant inputs. The final build() call is zero-cost, simply returning the constructed BoxChars struct.

Implementations§

Source§

impl BoxCharsBuilder

Source

pub const fn corners(self, char: char) -> Self

Sets all corner characters to the same value.

Source

pub const fn horizontal(self, char: char) -> Self

Sets both horizontal border characters (top and bottom) to the same value.

Source

pub const fn vertical(self, char: char) -> Self

Sets both vertical border characters (left and right) to the same value.

Source

pub const fn top_left(self, char: char) -> Self

Sets the top-left corner character.

Source

pub const fn top(self, char: char) -> Self

Sets the top border character.

Source

pub const fn top_right(self, char: char) -> Self

Sets the top-right corner character.

Source

pub const fn right(self, char: char) -> Self

Sets the right border character.

Source

pub const fn bottom_right(self, char: char) -> Self

Sets the bottom-right corner character.

Source

pub const fn bottom(self, char: char) -> Self

Sets the bottom border character.

Source

pub const fn bottom_left(self, char: char) -> Self

Sets the bottom-left corner character.

Source

pub const fn left(self, char: char) -> Self

Sets the left border character.

Source

pub const fn build(self) -> BoxChars

Builds and returns the final BoxChars.

Trait Implementations§

Source§

impl Clone for BoxCharsBuilder

Source§

fn clone(&self) -> BoxCharsBuilder

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 BoxCharsBuilder

Source§

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

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

impl Default for BoxCharsBuilder

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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
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> 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.