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 fnwhere possible for compile-time optimization - String splitting is performed only once during alignment processing
Fields§
§align: AlignmentThe alignment type (left, center, right)
split: StringThe string to split lines on (default: “\n”)
pad: charThe 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 tooSourcepub 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