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
impl AlignOptions
Sourcepub fn with_split<S: Into<String>>(self, split: S) -> Self
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
Sourcepub const fn with_pad(self, pad: char) -> Self
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
impl Clone for AlignOptions
Source§fn clone(&self) -> AlignOptions
fn clone(&self) -> AlignOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more