AlignOptions

Struct AlignOptions 

Source
pub struct AlignOptions {
    pub align: Alignment,
    pub split: String,
    pub pad: char,
}
Expand description

Configuration options for text alignment operations.

This struct provides comprehensive control over text alignment behavior through a fluent builder API. It allows customization of alignment direction, line separators, and padding characters to handle diverse text formatting requirements.

§Fields

  • align: The alignment direction (Alignment)
  • split: String used to separate lines (default: "\n")
  • pad: Character used for padding (default: ' ')

§Design Philosophy

The options struct follows the builder pattern, allowing for method chaining and readable configuration. All methods return Self, enabling fluent composition:

use ansi_align::{AlignOptions, Alignment};

let opts = AlignOptions::new(Alignment::Center)
    .with_split("|")
    .with_pad('_');

§Common Use Cases

§Standard Text Alignment

use ansi_align::{AlignOptions, Alignment, ansi_align_with_options};

let text = "Line 1\nLonger Line 2\nShort";
let opts = AlignOptions::new(Alignment::Center);
let result = ansi_align_with_options(text, &opts);

§Custom Line Separators

use ansi_align::{AlignOptions, Alignment, ansi_align_with_options};

// Pipe-separated data
let data = "Name|Age|Location";
let opts = AlignOptions::new(Alignment::Center).with_split("|");
let result = ansi_align_with_options(data, &opts);

// Multi-character separators
let data = "Part1<->Part2<->Part3";
let opts = AlignOptions::new(Alignment::Right).with_split("<->");
let result = ansi_align_with_options(data, &opts);

§Custom Padding Characters

use ansi_align::{AlignOptions, Alignment, ansi_align_with_options};

// Dot padding for visual emphasis
let text = "Title\nSubtitle";
let opts = AlignOptions::new(Alignment::Right).with_pad('.');
let result = ansi_align_with_options(text, &opts);
// Result: "..Title\nSubtitle"

// Zero padding for numeric alignment
let numbers = "1\n42\n123";
let opts = AlignOptions::new(Alignment::Right).with_pad('0');
let result = ansi_align_with_options(numbers, &opts);
// Result: "001\n042\n123"

§Complex Configurations

use ansi_align::{AlignOptions, Alignment, ansi_align_with_options};

// Table-like data with custom formatting
let table_row = "ID|Name|Status";
let opts = AlignOptions::new(Alignment::Center)
    .with_split("|")
    .with_pad('_');
let result = ansi_align_with_options(table_row, &opts);

§Performance Considerations

  • Options are designed to be lightweight and cheap to clone
  • The builder pattern methods are const fn where possible for compile-time optimization
  • String splitting is performed only once during alignment processing

Fields§

§align: Alignment

The alignment type (left, center, right)

§split: String

The string to split lines on (default: “\n”)

§pad: char

The padding character to use (default: “ “)

Implementations§

Source§

impl AlignOptions

Source

pub fn new(align: Alignment) -> Self

Creates new alignment options with the specified alignment direction.

Uses default values for split string ("\n") and padding character (' ').

§Arguments
  • align - The alignment direction to use
§Examples
use ansi_align::{AlignOptions, Alignment};

let opts = AlignOptions::new(Alignment::Center);
Source

pub fn with_split<S: Into<String>>(self, split: S) -> Self

Sets the string used to split lines using the builder pattern.

By default, lines are split on "\n", but you can specify any string as a line separator.

§Arguments
  • split - The string to use as a line separator
§Examples
use ansi_align::{AlignOptions, Alignment};

let opts = AlignOptions::new(Alignment::Center)
    .with_split("|")
    .with_split("<->"); // Multi-character separators work too
Source

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

Sets the character used for padding using the builder pattern.

By default, spaces (' ') are used for padding, but you can specify any character.

§Arguments
  • pad - The character to use for padding
§Examples
use ansi_align::{AlignOptions, Alignment};

let opts = AlignOptions::new(Alignment::Right)
    .with_pad('.');

Trait Implementations§

Source§

impl Clone for AlignOptions

Source§

fn clone(&self) -> AlignOptions

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 AlignOptions

Source§

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

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

impl Default for AlignOptions

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.