Repository: Nukesor/comfy-table
Pull request #57 (2022-01-11 07:02:10)

Refactor/naming
**THIS IS A BREAKING CHANGE**

because it's a breaking change, it's *probably* not worth doing...

updates some of the object naming:

- it is not idiomatic in Rust to prefix getters with `get_`
- remove some 'stuttering' in object names
as in,

```rust
// impl Table
    pub fn set_table_width(&mut self, table_width: u16) -> &mut Self {
        self.table_width = Some(table_width);
    }
```

(we're namespaced under `Table` here, so it's clear what the `width` is referring to without `table_`)

Nukesor: Jep :/

Those names weren't the best to start with. Sometimes the old OOP lectures manage seep through. But changing them now would be a huge breaking change.
We could think about dropping another major release for these, but I'm not sure if it's worth it either.
danieleades: Maybe something to keep in mind next there's a breaking change for other reasons

Patch:
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 366e4a8..0000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: "[BUG]"
-labels: bug
-assignees: Nukesor
-
----
-
-First of all, please read the [FAQ](https://github.com/Nukesor/comfy-table/blob/main/FAQ.md) if you're having styling issues!
-
-Otherwise feel free to go ahead :)
-
-#### Describe the bug
-
-A clear and concise description of what the bug is.
-
-#### Expected behavior
-
-A clear and concise description of what you expected to happen.
-
-#### Code
-
-Please add a code example of how the bug is triggered.
-
-#### Steps to reproduce the bug
-
-1. Create a table with two columns
-2. Add two rows ...
-
-#### Additional context
-
-- Operating System: 
-- comfy-table version: 
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index 71607d0..0000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-version: 2
-updates:
-- package-ecosystem: github-actions
-  directory: "/"
-  schedule:
-    interval: daily
diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml
index 03c5379..23fba5f 100644
--- a/.github/workflows/coverage.yml
+++ b/.github/workflows/coverage.yml
@@ -25,13 +25,13 @@ jobs:
     - uses: hecrj/setup-rust-action@v1
       with:
         rust-version: nightly
-    - uses: actions/checkout@v2.4.0
+    - uses: actions/checkout@v1
 
     - run: cargo build
     - run: cargo install cargo-tarpaulin
     - run: cargo tarpaulin --run-types Tests,Doctests --out Xml
 
-    - uses: codecov/codecov-action@v2.1.0
+    - uses: codecov/codecov-action@v1
       with:
         token: ${{ secrets.CODECOV_TOKEN }}
         file: ./cobertura.xml
diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml
index e1bac9c..bcd703e 100644
--- a/.github/workflows/style.yml
+++ b/.github/workflows/style.yml
@@ -26,7 +26,7 @@ jobs:
 
     steps:
       - name: Checkout code
-        uses: actions/checkout@v2.4.0
+        uses: actions/checkout@v2
 
       - name: Setup Rust toolchain
         uses: actions-rs/toolchain@v1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 44b49d6..38a2006 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,12 +3,6 @@ All notable changes to this project will be documented in this file.
 
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
-## [5.0.1] - 2022-02-18
-
-### Updates
-
-- All dependencies have been bumped.
-
 ## [5.0.0] - 2021-11-07
 
 ### Updates
diff --git a/Cargo.toml b/Cargo.toml
index 1450f51..0a4eb18 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -9,7 +9,6 @@ documentation = "https://docs.rs/comfy-table/"
 license = "MIT"
 keywords = ["shell", "commandline", "table", "unicode"]
 readme = "README.md"
-rust-version = "1.58"
 edition = "2021"
 
 [badges]
@@ -30,13 +29,11 @@ path = "examples/readme_table.rs"
 [features]
 default = ["tty"]
 tty = ["crossterm"]
-# This flag is for debugging only!
-debug = []
 
 [dependencies]
-crossterm = { version="0.23", optional=true }
-strum = "0.23"
-strum_macros = "0.23"
+crossterm = { version="0.22", optional=true }
+strum = "0.22"
+strum_macros = "0.22"
 unicode-width = "0.1"
 
 [dev-dependencies]
diff --git a/FAQ.md b/FAQ.md
deleted file mode 100644
index 888e0c4..0000000
--- a/FAQ.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# FAQ
-
-## Why is my styling broken? Why doesn't styling work?
-
-`comfy-table` only supports styling via the internal styling functions on [Cell](https://docs.rs/comfy-table/5.0.0/comfy_table/struct.Cell.html#method.fg).
-
-Any styling from other libraries, even crossterm, will most likely not work as expected or break.
-
-It's impossible for `comfy-table` to know about any ANSI escape sequences it doesn't create itself.
-Hence, it's not possible to respect unknown styling, as ANSI styling doesn't work this way and doesn't support this.
-
-If you come up with a solution to this problem, feel free to create a PR.
diff --git a/README.md b/README.md
index 1aede3b..7cdd6fa 100644
--- a/README.md
+++ b/README.md
@@ -49,7 +49,7 @@ fn main() {
                  "This is awesome",
         ]);
 
-    println!("{table}");
+    println!("{}", table);
 }
 ```
 
@@ -81,7 +81,7 @@ fn main() {
         .load_preset(UTF8_FULL)
         .apply_modifier(UTF8_ROUND_CORNERS)
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(40)
+        .set_width(40)
         .set_header(vec!["Header1", "Header2", "Header3"])
         .add_row(vec![
                  Cell::new("Center aligned").set_alignment(CellAlignment::Center),
@@ -95,10 +95,10 @@ fn main() {
         ]);
 
     // Set the default alignment for the third column to right
-    let column = table.get_column_mut(2).expect("Our table has three columns");
+    let column = table.column_mut(2).expect("Our table has three columns");
     column.set_cell_alignment(CellAlignment::Right);
 
-    println!("{table}");
+    println!("{}", table);
 }
 ```
 
@@ -133,7 +133,7 @@ fn main() {
     let mut table = Table::new();
     table.load_preset(UTF8_FULL)
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(80)
+        .set_width(80)
         .set_header(vec![
                     Cell::new("Header1").add_attribute(Attribute::Bold),
                     Cell::new("Header2").fg(Color::Green),
@@ -156,7 +156,7 @@ fn main() {
                  ])
         ]);
 
-    println!("{table}");
+    println!("{}", table);
 }
 ```
 
@@ -205,7 +205,7 @@ Furthermore, all terminal related functionality, including styling, can be disab
 Without this flag no `unsafe` code is used as far as I know.
 
 1. `crossterm::tty::IsTty`. This function is necessary to detect whether we're currently on a tty or not.
-    This is only called if no explicit width is provided via `Table::set_table_width`.
+    This is only called if no explicit width is provided via `Table::set_width`.
     ```rust,ignore
     /// On unix the `isatty()` function returns true if a file
     /// descriptor is a terminal.
@@ -218,7 +218,7 @@ Without this flag no `unsafe` code is used as far as I know.
     }
     ```
 2. `crossterm::terminal::size`. This function is necessary to detect the current terminal width if we're on a tty.
-    This is only called if no explicit width is provided via `Table::set_table_width`.
+    This is only called if no explicit width is provided via `Table::set_width`.
 
     http://rosettacode.org/wiki/Terminal_control/Dimensions#Library:_BSD_libc
     This is another libc call which is used to communicate with `/dev/tty` via a file descriptor.
diff --git a/benches/build_tables.rs b/benches/build_tables.rs
index aba3cb5..12eb417 100644
--- a/benches/build_tables.rs
+++ b/benches/build_tables.rs
@@ -11,7 +11,7 @@ fn build_readme_table() {
     let mut table = Table::new();
     table.load_preset(UTF8_FULL)
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(80)
+        .set_width(80)
         .set_header(vec![
             Cell::new("Header1").add_attribute(Attribute::Bold),
             Cell::new("Header2").fg(Color::Green),
@@ -43,7 +43,7 @@ fn build_readme_table() {
     let mut table = Table::new();
     table.load_preset(UTF8_FULL)
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(80)
+        .set_width(80)
         .set_header(vec![
             Cell::new("Header1"),
             Cell::new("Header2"),
@@ -71,7 +71,7 @@ fn build_huge_table() {
     table
         .load_preset(UTF8_FULL)
         .set_content_arrangement(ContentArrangement::DynamicFullWidth)
-        .set_table_width(400)
+        .set_width(400)
         .set_header(vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
 
     // Create a 10x10 grid
diff --git a/examples/readme_table.rs b/examples/readme_table.rs
index 21bdf2a..5f078c6 100644
--- a/examples/readme_table.rs
+++ b/examples/readme_table.rs
@@ -5,7 +5,7 @@ fn main() {
     let mut table = Table::new();
     table.load_preset(UTF8_FULL)
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(80)
+        .set_width(80)
         .set_header(vec![
             Cell::new("Header1").add_attribute(Attribute::Bold),
             Cell::new("Header2").fg(Color::Green),
@@ -28,5 +28,5 @@ fn main() {
             ])
         ]);
 
-    println!("{table}");
+    println!("{}", table);
 }
diff --git a/examples/readme_table_no_tty.rs b/examples/readme_table_no_tty.rs
index 6e4e588..4ec2d5c 100644
--- a/examples/readme_table_no_tty.rs
+++ b/examples/readme_table_no_tty.rs
@@ -8,7 +8,7 @@ fn main() {
     let mut table = Table::new();
     table.load_preset(UTF8_FULL)
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(80)
+        .set_width(80)
         .set_header(vec![
             Cell::new("Header1"),
             Cell::new("Header2"),
@@ -25,5 +25,5 @@ fn main() {
             Cell::new("Done"),
         ]);
 
-    println!("{table}");
+    println!("{}", table);
 }
diff --git a/src/cell.rs b/src/cell.rs
index 5a0921f..e79b652 100644
--- a/src/cell.rs
+++ b/src/cell.rs
@@ -26,7 +26,7 @@ impl Cell {
     /// Create a new Cell
     #[allow(clippy::needless_pass_by_value)]
     pub fn new<T: ToString>(content: T) -> Self {
-        Self {
+        Cell {
             content: content
                 .to_string()
                 .split('\n')
@@ -44,7 +44,7 @@ impl Cell {
     }
 
     /// Return a copy of the content contained in this cell.
-    pub fn get_content(&self) -> String {
+    pub fn content(&self) -> String {
         self.content.join("\n")
     }
 
@@ -152,8 +152,8 @@ impl Cell {
 /// let cell: Cell = 5u32.into();
 /// ```
 impl<T: ToString> From<T> for Cell {
-    fn from(content: T) -> Self {
-        Self::new(content)
+    fn from(content: T) -> Cell {
+        Cell::new(content)
     }
 }
 
@@ -178,8 +178,8 @@ where
     T: IntoIterator,
     T::Item: Into<Cell>,
 {
-    fn from(cells: T) -> Self {
-        Self(cells.into_iter().map(Into::into).collect())
+    fn from(cells: T) -> Cells {
+        Cells(cells.into_iter().map(Into::into).collect())
     }
 }
 
@@ -192,6 +192,6 @@ mod tests {
         let content = "This is\nsome multiline\nstring".to_string();
         let cell = Cell::new(content.clone());
 
-        assert_eq!(cell.get_content(), content);
+        assert_eq!(cell.content(), content);
     }
 }
diff --git a/src/column.rs b/src/column.rs
index bdd2a09..3770c79 100644
--- a/src/column.rs
+++ b/src/column.rs
@@ -16,7 +16,7 @@ use crate::style::{CellAlignment, ColumnConstraint};
 /// let mut table = Table::new();
 /// table.set_header(&vec!["one", "two"]);
 ///
-/// let mut column = table.get_column_mut(1).expect("This should be column two");
+/// let mut column = table.column_mut(1).expect("This should be column two");
 ///
 /// // Set the max width for all cells of this column to 20 characters.
 /// column.set_constraint(UpperBoundary(Fixed(20)));
@@ -44,7 +44,7 @@ pub struct Column {
 
 impl Column {
     pub fn new(index: usize) -> Self {
-        Self {
+        Column {
             index,
             padding: (1, 1),
             delimiter: None,
@@ -65,7 +65,7 @@ impl Column {
     }
 
     /// Internal convenience helper that returns the total width of the combined padding.
-    pub(crate) fn get_padding_width(&self) -> u16 {
+    pub(crate) fn padding_width(&self) -> u16 {
         self.padding.0 + self.padding.1
     }
 
@@ -82,13 +82,13 @@ impl Column {
 
     /// Get the width in characters of the widest line in this column.\
     /// This doesn't include padding yet!
-    pub fn get_max_content_width(&self) -> u16 {
+    pub fn max_content_width(&self) -> u16 {
         self.max_content_width
     }
 
     /// Get the maximum possible width for this column.\
     /// This means widest line in this column + padding
-    pub fn get_max_width(&self) -> u16 {
+    pub fn max_width(&self) -> u16 {
         self.max_content_width + self.padding.0 + self.padding.1
     }
 
@@ -101,7 +101,7 @@ impl Column {
     }
 
     /// Get the constraint that is used for this column.
-    pub fn get_constraint(&self) -> Option<&ColumnConstraint> {
+    pub fn constraint(&self) -> Option<&ColumnConstraint> {
         self.constraint.as_ref()
     }
 
@@ -132,15 +132,12 @@ mod tests {
     fn test_column() {
         let mut column = Column::new(0);
         column.set_padding((0, 0));
-        assert_eq!(column.get_max_content_width(), 0);
+        assert_eq!(column.max_content_width(), 0);
 
         column.set_constraint(ColumnConstraint::ContentWidth);
-        assert_eq!(
-            column.get_constraint(),
-            Some(&ColumnConstraint::ContentWidth)
-        );
+        assert_eq!(column.constraint(), Some(&ColumnConstraint::ContentWidth));
 
         column.remove_constraint();
-        assert_eq!(column.get_constraint(), None);
+        assert_eq!(column.constraint(), None);
     }
 }
diff --git a/src/row.rs b/src/row.rs
index 64c7c02..0c30b0b 100644
--- a/src/row.rs
+++ b/src/row.rs
@@ -5,7 +5,7 @@ use unicode_width::UnicodeWidthStr;
 use crate::cell::{Cell, Cells};
 
 /// Each row contains [Cells](crate::Cell) and can be added to a [Table](crate::Table).
-#[derive(Clone, Debug, Default)]
+#[derive(Clone, Debug)]
 pub struct Row {
     /// Index of the row.
     /// This will be set as soon as the row is added to the table.
@@ -14,9 +14,19 @@ pub struct Row {
     pub(crate) max_height: Option<usize>,
 }
 
+impl Default for Row {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
 impl Row {
-    pub fn new() -> Self {
-        Self::default()
+    pub fn new() -> Row {
+        Row {
+            index: None,
+            cells: Vec::new(),
+            max_height: None,
+        }
     }
 
     /// Add a cell to the row.
@@ -92,8 +102,8 @@ impl Row {
 /// let row = Row::from(vec![1, 2, 3, 4]);
 /// ```
 impl<T: Into<Cells>> From<T> for Row {
-    fn from(cells: T) -> Self {
-        Self {
+    fn from(cells: T) -> Row {
+        Row {
             index: None,
             cells: cells.into().0,
             max_height: None,
@@ -132,7 +142,7 @@ mod tests {
         let mut cell_content_iter = cells.iter();
         for cell in row.cell_iter() {
             assert_eq!(
-                cell.get_content(),
+                cell.content(),
                 cell_content_iter.next().unwrap().to_string()
             );
         }
diff --git a/src/style/table.rs b/src/style/table.rs
index a76ce31..fbdf74f 100644
--- a/src/style/table.rs
+++ b/src/style/table.rs
@@ -20,7 +20,7 @@ pub enum ContentArrangement {
     /// Constraints on columns are still respected.
     ///
     /// **Warning:** If terminal width cannot be determined and no table_width is set via
-    /// [Table::set_table_width](crate::table::Table::set_table_width),
+    /// [Table::set_width](crate::table::Table::set_width),
     /// this option won't work and [Disabled](ContentArrangement::Disabled) will be used as a fallback.
     Dynamic,
     /// This is mode is the same as the [ContentArrangement::Dynamic] arrangement, but it will always use as much
diff --git a/src/table.rs b/src/table.rs
index d535da0..2fb07f5 100644
--- a/src/table.rs
+++ b/src/table.rs
@@ -32,7 +32,7 @@ pub struct Table {
     no_tty: bool,
     #[cfg(feature = "tty")]
     use_stderr: bool,
-    table_width: Option<u16>,
+    width: Option<u16>,
     enforce_styling: bool,
 }
 
@@ -51,7 +51,7 @@ impl Default for Table {
 impl Table {
     /// Create a new table with default ASCII styling.
     pub fn new() -> Self {
-        let mut table = Self {
+        let mut table = Table {
             columns: Vec::new(),
             header: None,
             rows: Vec::new(),
@@ -60,7 +60,7 @@ impl Table {
             no_tty: false,
             #[cfg(feature = "tty")]
             use_stderr: false,
-            table_width: None,
+            width: None,
             style: HashMap::new(),
             enforce_styling: false,
         };
@@ -105,7 +105,7 @@ impl Table {
         self
     }
 
-    pub fn get_header(&self) -> Option<&Row> {
+    pub fn header(&self) -> Option<&Row> {
         self.header.as_ref()
     }
 
@@ -130,25 +130,25 @@ impl Table {
     /// Enforce a max width that should be used in combination with [dynamic content arrangement](ContentArrangement::Dynamic).\
     /// This is usually not necessary, if you plan to output your table to a tty,
     /// since the terminal width can be automatically determined.
-    pub fn set_table_width(&mut self, table_width: u16) -> &mut Self {
-        self.table_width = Some(table_width);
+    pub fn set_width(&mut self, width: u16) -> &mut Self {
+        self.width = Some(width);
 
         self
     }
 
     /// Get the expected width of the table.
     ///
-    /// This will be `Some(width)`, if the terminal width can be detected or if the table width is set via [set_table_width](Table::set_table_width).
+    /// This will be `Some(width)`, if the terminal width can be detected or if the table width is set via [set_width](Table::set_width).
     ///
     /// If neither is not possible, `None` will be returned.\
-    /// This implies that both the [Dynamic](ContentArrangement::Dynamic) mode and the [Percentage](crate::style::Width::Percentage) constraint won't work.
+    /// This implies that both the [Dynamic](ContentArrangement::Dynamic) mode and the [Percentage](crate::style::ColumnConstraint::Percentage) constraint won't work.
     #[cfg(feature = "tty")]
-    pub fn get_table_width(&self) -> Option<u16> {
-        if let Some(width) = self.table_width {
+    pub fn width(&self) -> Option<u16> {
+        if let Some(width) = self.width {
             Some(width)
         } else if self.is_tty() {
-            if let Ok((table_width, _)) = terminal::size() {
-                Some(table_width)
+            if let Ok((width, _)) = terminal::size() {
+                Some(width)
             } else {
                 None
             }
@@ -158,8 +158,8 @@ impl Table {
     }
 
     #[cfg(not(feature = "tty"))]
-    pub fn get_table_width(&self) -> Option<u16> {
-        self.table_width
+    pub fn width(&self) -> Option<u16> {
+        self.width
     }
 
     /// Specify how Comfy Table should arrange the content in your table.
@@ -192,11 +192,11 @@ impl Table {
     ///
     /// This disables:
     ///
-    /// - table_width lookup from the current tty
+    /// - width lookup from the current tty
     /// - Styling and attributes on cells (unless you use [Table::enforce_styling])
     ///
     /// If you use the [dynamic content arrangement](ContentArrangement::Dynamic),
-    /// you need to set the width of your desired table manually with [set_table_width](Table::set_table_width).
+    /// you need to set the width of your desired table manually with [set_width](Table::set_width).
     pub fn force_no_tty(&mut self) -> &mut Self {
         self.no_tty = true;
 
@@ -349,7 +349,7 @@ impl Table {
         let mut preset_string = String::new();
 
         for component in components {
-            match self.get_style(component) {
+            match self.style(component) {
                 None => preset_string.push(' '),
                 Some(character) => preset_string.push(character),
             }
@@ -434,10 +434,10 @@ impl Table {
     /// use comfy_table::TableComponent::*;
     ///
     /// let mut table = Table::new();
-    /// assert_eq!(table.get_style(TopLeftCorner), Some('+'));
+    /// assert_eq!(table.style(TopLeftCorner), Some('+'));
     /// ```
 
-    pub fn get_style(&mut self, component: TableComponent) -> Option<char> {
+    pub fn style(&mut self, component: TableComponent) -> Option<char> {
         self.style.get(&component).copied()
     }
 
@@ -451,12 +451,12 @@ impl Table {
     }
 
     /// Get a reference to a specific column.
-    pub fn get_column(&self, index: usize) -> Option<&Column> {
+    pub fn column(&self, index: usize) -> Option<&Column> {
         self.columns.get(index)
     }
 
     /// Get a mutable reference to a specific column.
-    pub fn get_column_mut(&mut self, index: usize) -> Option<&mut Column> {
+    pub fn column_mut(&mut self, index: usize) -> Option<&mut Column> {
         self.columns.get_mut(index)
     }
 
@@ -506,9 +506,9 @@ impl Table {
     ///
     /// // Create an iterator over the second column
     /// let mut cell_iter = table.column_cells_iter(1);
-    /// assert_eq!(cell_iter.next().unwrap().unwrap().get_content(), "Second");
+    /// assert_eq!(cell_iter.next().unwrap().unwrap().content(), "Second");
     /// assert!(cell_iter.next().unwrap().is_none());
-    /// assert_eq!(cell_iter.next().unwrap().unwrap().get_content(), "Fifth");
+    /// assert_eq!(cell_iter.next().unwrap().unwrap().content(), "Fifth");
     /// assert!(cell_iter.next().is_none());
     /// ```
     pub fn column_cells_iter(&self, column_index: usize) -> ColumnCellIter {
@@ -520,12 +520,12 @@ impl Table {
     }
 
     /// Reference to a specific row
-    pub fn get_row(&self, index: usize) -> Option<&Row> {
+    pub fn row(&self, index: usize) -> Option<&Row> {
         self.rows.get(index)
     }
 
     /// Mutable reference to a specific row
-    pub fn get_row_mut(&mut self, index: usize) -> Option<&mut Row> {
+    pub fn row_mut(&mut self, index: usize) -> Option<&mut Row> {
         self.rows.get_mut(index)
     }
 
@@ -645,6 +645,6 @@ mod tests {
         table.add_row(&vec!["", "", "shorter"]);
         assert_eq!(table.column_max_content_widths(), vec![4, 5, 22]);
 
-        println!("{table}");
+        println!("{}", table);
     }
 }
diff --git a/src/utils/arrangement/constraints.rs b/src/utils/arrangement/constraint.rs
similarity index 95%
rename from src/utils/arrangement/constraints.rs
rename to src/utils/arrangement/constraint.rs
index d7e6309..4f70432 100644
--- a/src/utils/arrangement/constraints.rs
+++ b/src/utils/arrangement/constraint.rs
@@ -41,12 +41,10 @@ pub fn evaluate(
         _ => {}
     }
 
-    if let Some(min_width) =
-        get_min_constraint(table, &column.constraint, table_width, visible_columns)
-    {
+    if let Some(min_width) = min(table, &column.constraint, table_width, visible_columns) {
         // In case a min_width is specified, we may already fix the size of the column.
         // We do this, if we know that the content is smaller than the min size.
-        if column.get_max_width() <= min_width {
+        if column.max_width() <= min_width {
             let width = absolute_width_with_padding(column, min_width);
             let info = ColumnDisplayInfo::new(column, width);
             infos.insert(column.index, info);
@@ -61,7 +59,7 @@ pub fn evaluate(
 /// Lower boundaries with [Width::Fixed] just return their internal value. \
 /// Lower boundaries with [Width::Percentage] return the percental amount of the current table
 /// width.
-pub fn get_min_constraint(
+pub fn min(
     table: &Table,
     constraint: &Option<ColumnConstraint>,
     table_width: Option<usize>,
@@ -88,7 +86,7 @@ pub fn get_min_constraint(
 /// Upper boundaries with [Width::Fixed] just return their internal value. \
 /// Upper boundaries with [Width::Percentage] return the percental amount of the current table
 /// width.
-pub fn get_max_constraint(
+pub fn max(
     table: &Table,
     constraint: &Option<ColumnConstraint>,
     table_width: Option<usize>,
diff --git a/src/utils/arrangement/disabled.rs b/src/utils/arrangement/disabled.rs
index 17adeb4..7733aee 100644
--- a/src/utils/arrangement/disabled.rs
+++ b/src/utils/arrangement/disabled.rs
@@ -1,4 +1,4 @@
-use super::constraints::get_max_constraint;
+use super::constraint;
 use super::helper::*;
 use super::{ColumnDisplayInfo, DisplayInfos};
 use crate::Table;
@@ -12,12 +12,10 @@ pub fn arrange(table: &Table, infos: &mut DisplayInfos, visible_columns: usize)
             continue;
         }
 
-        let mut width = column.get_max_content_width();
+        let mut width = column.max_content_width();
 
         // Reduce the width, if a column has longer content than the specified MaxWidth constraint.
-        if let Some(max_width) =
-            get_max_constraint(table, &column.constraint, None, visible_columns)
-        {
+        if let Some(max_width) = constraint::max(table, &column.constraint, None, visible_columns) {
             if max_width < width {
                 width = absolute_width_with_padding(column, max_width);
             }
diff --git a/src/utils/arrangement/dynamic.rs b/src/utils/arrangement/dynamic.rs
index 7b0bdd2..ff16e28 100644
--- a/src/utils/arrangement/dynamic.rs
+++ b/src/utils/arrangement/dynamic.rs
@@ -1,7 +1,6 @@
 use unicode_width::UnicodeWidthStr;
 
-use super::constraints::get_max_constraint;
-use super::constraints::get_min_constraint;
+use super::constraint;
 use super::helper::*;
 use super::{ColumnDisplayInfo, DisplayInfos};
 use crate::style::*;
@@ -35,8 +34,10 @@ pub fn arrange(table: &Table, infos: &mut DisplayInfos, table_width: usize) {
     let remaining_width: usize =
         available_content_width(table, infos, visible_columns, table_width);
 
-    #[cfg(feature = "debug")]
-    println!("Table width: {table_width}, Start remaining width {remaining_width}");
+    //println!(
+    //    "Table width: {}, Start remaining width {}",
+    //    table_width, remaining_width
+    //);
 
     // Step 2-4.
     // Find all columns that require less space than the average.
@@ -62,11 +63,13 @@ pub fn arrange(table: &Table, infos: &mut DisplayInfos, table_width: usize) {
         remaining_columns = columns;
     }
 
-    #[cfg(feature = "debug")]
-    {
-        println!("After less than average: {infos:#?}");
-        println!("Remaining width {remaining_width}, column {remaining_columns}");
-    }
+    //{
+    //    println!("After less than average: {:#?}", infos);
+    //    println!(
+    //        "Remaining width {}, column {}",
+    //        remaining_width, remaining_columns
+    //    );
+    //}
 
     // Step 6
     // All remaining columns should get an equal amount of remaining space.
@@ -86,11 +89,13 @@ pub fn arrange(table: &Table, infos: &mut DisplayInfos, table_width: usize) {
         remaining_columns = columns;
     }
 
-    #[cfg(feature = "debug")]
-    {
-        println!("After optimize: {infos:#?}",);
-        println!("Remaining width {remaining_width}, column {remaining_columns}",);
-    }
+    //{
+    //    println!("After optimize: {:#?}", infos);
+    //    println!(
+    //        "Remaining width {}, column {}",
+    //        remaining_width, remaining_columns
+    //    );
+    //}
 
     // Early exit and one branch of Part 7.
     //
@@ -101,8 +106,7 @@ pub fn arrange(table: &Table, infos: &mut DisplayInfos, table_width: usize) {
         if remaining_width > 0 && matches!(table.arrangement, ContentArrangement::DynamicFullWidth)
         {
             use_full_width(infos, remaining_width);
-            #[cfg(feature = "debug")]
-            println!("After full width: {infos:#?}");
+            //println!("After full width: {:#?}", infos);
         }
         return;
     }
@@ -115,8 +119,7 @@ pub fn arrange(table: &Table, infos: &mut DisplayInfos, table_width: usize) {
 
     distribute_remaining_space(&table.columns, infos, remaining_width, remaining_columns);
 
-    #[cfg(feature = "debug")]
-    println!("After distribute: {infos:#?}");
+    //println!("After distribute: {:#?}", infos);
 }
 
 /// Step 1
@@ -219,18 +222,17 @@ fn find_columns_less_than_average(
             // two conditions are met:
             // - The average remaining space is bigger then the MaxWidth constraint.
             // - The actual max content of the column is bigger than the MaxWidth constraint.
-            if let Some(max_width) = get_max_constraint(
+            if let Some(max_width) = constraint::max(
                 table,
                 &column.constraint,
                 Some(table_width),
                 visible_coulumns,
             ) {
                 // Max/Min constraints always include padding!
-                let space_after_padding = average_space + usize::from(column.get_padding_width());
+                let space_after_padding = average_space + usize::from(column.padding_width());
 
                 // Check that both conditions mentioned above are met.
-                if usize::from(max_width) <= space_after_padding
-                    && column.get_max_width() >= max_width
+                if usize::from(max_width) <= space_after_padding && column.max_width() >= max_width
                 {
                     // Save the calculated info, this column has been handled.
                     let width = absolute_width_with_padding(column, max_width);
@@ -251,8 +253,8 @@ fn find_columns_less_than_average(
 
             // The column has a smaller max_content_width than the average space.
             // Fix the width to max_content_width and mark it as checked
-            if usize::from(column.get_max_content_width()) < average_space {
-                let info = ColumnDisplayInfo::new(column, column.get_max_content_width());
+            if usize::from(column.max_content_width()) < average_space {
+                let info = ColumnDisplayInfo::new(column, column.max_content_width());
                 infos.insert(column.index, info);
 
                 // Continue with new recalculated width
@@ -293,7 +295,7 @@ fn enforce_lower_boundary_constraints(
         }
 
         // Check whether the column has a LowerBoundary constraint.
-        let min_width = if let Some(min_width) = get_min_constraint(
+        let min_width = if let Some(min_width) = constraint::min(
             table,
             &column.constraint,
             Some(table_width),
@@ -366,7 +368,7 @@ fn optimize_space_after_split(
                 continue;
             }
 
-            let longest_line = get_longest_line_after_split(average_space, column, table);
+            let longest_line = longest_line_after_split(average_space, column, table);
 
             // If there's a considerable amount space left after splitting, we freeze the column and
             // set its content width to the calculated post-split width.
@@ -396,7 +398,7 @@ fn optimize_space_after_split(
 /// existing line after the split.
 ///
 /// A lot of this logic is duplicated from the [utils::format::format_row] function.
-fn get_longest_line_after_split(average_space: usize, column: &Column, table: &Table) -> usize {
+fn longest_line_after_split(average_space: usize, column: &Column, table: &Table) -> usize {
     // Collect all resulting lines of the column in a single vector.
     // That way we can easily determine the longest line afterwards.
     let mut column_lines = Vec::new();
@@ -410,7 +412,7 @@ fn get_longest_line_after_split(average_space: usize, column: &Column, table: &T
             continue;
         };
 
-        let delimiter = get_delimiter(table, column, cell);
+        let delimiter = delimiter(table, column, cell);
 
         // Create a temporary ColumnDisplayInfo with the average space as width.
         // That way we can simulate how the splitted text will look like.
diff --git a/src/utils/arrangement/helper.rs b/src/utils/arrangement/helper.rs
index d447068..6994f0b 100644
--- a/src/utils/arrangement/helper.rs
+++ b/src/utils/arrangement/helper.rs
@@ -53,7 +53,7 @@ pub fn count_border_columns(table: &Table, visible_columns: usize) -> usize {
 
 /// Get the delimiter for a Cell.
 /// Priority is in decreasing order: Cell -> Column -> Table.
-pub fn get_delimiter(table: &Table, column: &Column, cell: &Cell) -> char {
+pub fn delimiter(table: &Table, column: &Column, cell: &Cell) -> char {
     // Determine, which delimiter should be used
     if let Some(delimiter) = cell.delimiter {
         delimiter
diff --git a/src/utils/arrangement/mod.rs b/src/utils/arrangement/mod.rs
index 4c4d452..066a517 100644
--- a/src/utils/arrangement/mod.rs
+++ b/src/utils/arrangement/mod.rs
@@ -4,7 +4,7 @@ use super::ColumnDisplayInfo;
 use crate::style::ContentArrangement;
 use crate::table::Table;
 
-mod constraints;
+mod constraint;
 mod disabled;
 mod dynamic;
 mod helper;
@@ -14,17 +14,16 @@ type DisplayInfos = BTreeMap<usize, ColumnDisplayInfo>;
 /// Determine the width of each column depending on the content of the given table.
 /// The results uses Option<usize>, since users can choose to hide columns.
 pub(crate) fn arrange_content(table: &Table) -> Vec<ColumnDisplayInfo> {
-    let table_width = table.get_table_width().map(usize::from);
+    let table_width = table.width().map(usize::from);
     let mut infos = BTreeMap::new();
 
     let visible_columns = helper::count_visible_columns(&table.columns);
     for column in table.columns.iter() {
         if column.constraint.is_some() {
-            constraints::evaluate(table, column, &mut infos, table_width, visible_columns);
+            constraint::evaluate(table, column, &mut infos, table_width, visible_columns);
         }
     }
-    #[cfg(feature = "debug")]
-    println!("After initial constraints: {infos:#?}");
+    //println!("After initial constraints: {:#?}", infos);
 
     // Fallback to `ContentArrangement::Disabled`, if we don't have any information
     // on how wide the table should be.
diff --git a/src/utils/formatting/content_format.rs b/src/utils/formatting/content_format.rs
index 75c5adf..b5d8724 100644
--- a/src/utils/formatting/content_format.rs
+++ b/src/utils/formatting/content_format.rs
@@ -9,7 +9,7 @@ use crate::style::CellAlignment;
 use crate::table::Table;
 use crate::utils::ColumnDisplayInfo;
 
-pub fn get_delimiter(cell: &Cell, info: &ColumnDisplayInfo, table: &Table) -> char {
+pub fn delimiter(cell: &Cell, info: &ColumnDisplayInfo, table: &Table) -> char {
     // Determine, which delimiter should be used
     if let Some(delimiter) = cell.delimiter {
         delimiter
@@ -43,7 +43,7 @@ pub fn format_content(table: &Table, display_info: &[ColumnDisplayInfo]) -> Vec<
     let mut table_content = Vec::new();
 
     // Format table header if it exists
-    if let Some(header) = table.get_header() {
+    if let Some(header) = table.header() {
         table_content.push(format_row(header, display_info, table));
     }
 
@@ -82,7 +82,7 @@ pub fn format_row(
             continue;
         };
 
-        let delimiter = get_delimiter(cell, info, table);
+        let delimiter = delimiter(cell, info, table);
 
         // Iterate over each line and split it into multiple lines, if necessary.
         // Newlines added by the user will be preserved.
diff --git a/src/utils/mod.rs b/src/utils/mod.rs
index 3d62d55..5be35ef 100644
--- a/src/utils/mod.rs
+++ b/src/utils/mod.rs
@@ -31,7 +31,7 @@ impl ColumnDisplayInfo {
         if content_width == 0 {
             content_width = 1;
         }
-        Self {
+        ColumnDisplayInfo {
             padding: column.padding,
             delimiter: column.delimiter,
             content_width,


Test patch:
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 584650f..9282795 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -48,7 +48,7 @@ jobs:
 
     steps:
       - name: Checkout code
-        uses: actions/checkout@v2.4.0
+        uses: actions/checkout@v2
 
       - name: Setup Rust toolchain
         uses: actions-rs/toolchain@v1
diff --git a/tests/all/alignment_test.rs b/tests/all/alignment_test.rs
index f18e7dd..f01541e 100644
--- a/tests/all/alignment_test.rs
+++ b/tests/all/alignment_test.rs
@@ -33,7 +33,7 @@ fn cell_alignment() {
         column.set_cell_alignment(*alignment);
     }
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +---------------------+---------------------+---------------------+
 | Header1             |       Header2       |             Header3 |
diff --git a/tests/all/combined_test.rs b/tests/all/combined_test.rs
index 3d8698e..b8155a1 100644
--- a/tests/all/combined_test.rs
+++ b/tests/all/combined_test.rs
@@ -6,7 +6,7 @@ fn get_preset_table() -> Table {
     let mut table = Table::new();
     table.load_preset(UTF8_FULL)
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(80)
+        .set_width(80)
         .set_header(vec![
             Cell::new("Header1").add_attribute(Attribute::Bold),
             Cell::new("Header2").fg(Color::Green),
@@ -36,7 +36,7 @@ fn get_preset_table() -> Table {
 fn combined_features() {
     let mut table = get_preset_table();
     table.force_no_tty().enforce_styling();
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 ┌─────────────────────┬───────────────────────────────┬────────────────────────┐
 │\u{1b}[1m Header1             \u{1b}[0m┆\u{1b}[38;5;10m Header2                       \u{1b}[39m┆ Header3                │
@@ -51,6 +51,6 @@ fn combined_features() {
 │                     ┆ Here comes a reallylongwordth ┆                        │
 │                     ┆ atshoulddynamicallywrap       ┆                        │
 └─────────────────────┴───────────────────────────────┴────────────────────────┘";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
diff --git a/tests/all/constraints_test.rs b/tests/all/constraints_test.rs
index 560873c..e5135ea 100644
--- a/tests/all/constraints_test.rs
+++ b/tests/all/constraints_test.rs
@@ -32,7 +32,7 @@ fn fixed_max_min_constraints() {
         Absolute(Fixed(10)),
     ]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +----------+--------+----------+
 | smol     | Header | Header3  |
@@ -50,7 +50,7 @@ fn fixed_max_min_constraints() {
 |          | line   |          |
 |          | stuff  |          |
 +----------+--------+----------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 
     // Now try this again when using dynamic content arrangement
@@ -60,9 +60,9 @@ fn fixed_max_min_constraints() {
     // Since the left and right column are fixed, the middle column should only get a width of 2
     table
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(28);
+        .set_width(28);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +----------+----+----------+
 | smol     | He | Header3  |
@@ -95,7 +95,7 @@ fn fixed_max_min_constraints() {
 |          | uf |          |
 |          | f  |          |
 +----------+----+----------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
 
@@ -107,7 +107,7 @@ fn unnecessary_max_min_constraints() {
 
     table.set_constraints(vec![LowerBoundary(Fixed(1)), UpperBoundary(Fixed(30))]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +------+----------------------+------------------------+
 | smol | Header2              | Header3                |
@@ -118,12 +118,12 @@ fn unnecessary_max_min_constraints() {
 |      | add some             |                        |
 |      | multi line stuff     |                        |
 +------+----------------------+------------------------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 
     // Now test for dynamic content arrangement
     table.set_content_arrangement(ContentArrangement::Dynamic);
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +------+----------------------+------------------------+
 | smol | Header2              | Header3                |
@@ -134,7 +134,7 @@ fn unnecessary_max_min_constraints() {
 |      | add some             |                        |
 |      | multi line stuff     |                        |
 +------+----------------------+------------------------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
 
@@ -147,14 +147,14 @@ fn constraints_bigger_than_table_width() {
 
     table
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(28)
+        .set_width(28)
         .set_constraints(vec![
             UpperBoundary(Fixed(50)),
             LowerBoundary(Fixed(30)),
             ContentWidth,
         ]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +---+------------------------------+------------------------+
 | s | Header2                      | Header3                |
@@ -172,7 +172,7 @@ fn constraints_bigger_than_table_width() {
 | o | multi line stuff             |                        |
 | l |                              |                        |
 +---+------------------------------+------------------------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
 
@@ -186,10 +186,10 @@ fn percentage() {
     // The the rest should arrange accordingly.
     table
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(40)
+        .set_width(40)
         .set_constraints(vec![Absolute(Percentage(20))]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +-------+---------------+--------------+
 | smol  | Header2       | Header3      |
@@ -202,7 +202,7 @@ fn percentage() {
 |       | multi line    |              |
 |       | stuff         |              |
 +-------+---------------+--------------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
 
@@ -214,17 +214,17 @@ fn max_100_percentage() {
         .set_header(&vec!["smol"])
         .add_row(&vec!["smol"])
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(40)
+        .set_width(40)
         .set_constraints(vec![Absolute(Percentage(200))]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +--------------------------------------+
 | smol                                 |
 +======================================+
 | smol                                 |
 +--------------------------------------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
 
@@ -234,14 +234,14 @@ fn percentage_second() {
 
     table
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(40)
+        .set_width(40)
         .set_constraints(vec![
             LowerBoundary(Percentage(40)),
             UpperBoundary(Percentage(30)),
             Absolute(Percentage(30)),
         ]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +--------------+----------+----------+
 | smol         | Header2  | Header3  |
@@ -257,7 +257,7 @@ fn percentage_second() {
 |              | line     |          |
 |              | stuff    |          |
 +--------------+----------+----------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
 
@@ -267,14 +267,14 @@ fn max_percentage() {
 
     table
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(40)
+        .set_width(40)
         .set_constraints(vec![
             ContentWidth,
             UpperBoundary(Percentage(30)),
             Absolute(Percentage(30)),
         ]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +------+----------+----------+
 | smol | Header2  | Header3  |
@@ -290,7 +290,7 @@ fn max_percentage() {
 |      | line     |          |
 |      | stuff    |          |
 +------+----------+----------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
 
@@ -301,7 +301,7 @@ fn min_max_boundary() {
 
     table
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(40)
+        .set_width(40)
         .set_constraints(vec![
             Boundaries {
                 lower: Percentage(50),
@@ -314,7 +314,7 @@ fn min_max_boundary() {
             Absolute(Percentage(30)),
         ]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +------------------+---------------+----------+
 | smol             | Header2       | Header3  |
@@ -329,6 +329,6 @@ fn min_max_boundary() {
 |                  | multi line    |          |
 |                  | stuff         |          |
 +------------------+---------------+----------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
diff --git a/tests/all/content_arrangement_test.rs b/tests/all/content_arrangement_test.rs
index ca21364..8872c8d 100644
--- a/tests/all/content_arrangement_test.rs
+++ b/tests/all/content_arrangement_test.rs
@@ -17,7 +17,7 @@ fn simple_dynamic_table() {
     let mut table = Table::new();
     table.set_header(&vec!["Header1", "Header2", "Head"])
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(25)
+        .set_width(25)
         .add_row(&vec![
             "This is a very long line with a lot of text",
             "This is anotherverylongtextwithlongwords text",
@@ -29,7 +29,7 @@ fn simple_dynamic_table() {
             "smol",
         ]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +--------+-------+------+
 | Header | Heade | Head |
@@ -66,7 +66,7 @@ fn simple_dynamic_table() {
 |        | line  |      |
 |        | stuff |      |
 +--------+-------+------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert!(table.lines().all(|line| line.width() == 25));
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
@@ -93,20 +93,20 @@ fn table_with_truncate() {
     table
         .set_header(&vec!["Header1", "Header2", "Head"])
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(35)
+        .set_width(35)
         .add_row(first_row)
         .add_row(second_row);
 
     // The first column will be wider than 6 chars.
     // The second column's content is wider than 6 chars. There should be a '...'.
-    let second_column = table.get_column_mut(1).unwrap();
+    let second_column = table.column_mut(1).unwrap();
     second_column.set_constraint(Absolute(Fixed(8)));
 
     // The third column's content is less than 6 chars width. There shouldn't be a '...'.
-    let third_column = table.get_column_mut(2).unwrap();
+    let third_column = table.column_mut(2).unwrap();
     third_column.set_constraint(Absolute(Fixed(7)));
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +----------------+--------+-------+
 | Header1        | Header | Head  |
@@ -122,7 +122,7 @@ fn table_with_truncate() {
 | long line in   | ther   |       |
 | the middle ... | text   |       |
 +----------------+--------+-------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_table_lines(&table, 35);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
@@ -137,14 +137,14 @@ fn distribute_space_after_split() {
     table
         .set_header(&vec!["Header1", "Header2", "Head"])
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(80)
+        .set_width(80)
         .add_row(&vec![
             "This is a very long line with a lot of text",
             "This is text with a anotherverylongtexttesttest",
             "smol",
         ]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +-----------------------------------------+-----------------------------+------+
 | Header1                                 | Header2                     | Head |
@@ -152,7 +152,7 @@ fn distribute_space_after_split() {
 | This is a very long line with a lot of  | This is text with a         | smol |
 | text                                    | anotherverylongtexttesttest |      |
 +-----------------------------------------+-----------------------------+------+";
-    println!("{expected}");
+    println!("{}", expected);
 
     assert_table_lines(&table, 80);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
@@ -166,10 +166,10 @@ fn unused_space_after_split() {
     table
         .set_header(&vec!["Header1"])
         .set_content_arrangement(ContentArrangement::Dynamic)
-        .set_table_width(30)
+        .set_width(30)
         .add_row(&vec!["This is text with a anotherverylongtext"]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +---------------------+
 | Header1             |
@@ -177,7 +177,7 @@ fn unused_space_after_split() {
 | This is text with a |
 | anotherverylongtext |
 +---------------------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_table_lines(&table, 23);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
@@ -189,10 +189,10 @@ fn dynamic_full_width_after_split() {
     table
         .set_header(&vec!["Header1"])
         .set_content_arrangement(ContentArrangement::DynamicFullWidth)
-        .set_table_width(50)
+        .set_width(50)
         .add_row(&vec!["This is text with a anotherverylongtexttesttestaa"]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +------------------------------------------------+
 | Header1                                        |
@@ -200,7 +200,7 @@ fn dynamic_full_width_after_split() {
 | This is text with a                            |
 | anotherverylongtexttesttestaa                  |
 +------------------------------------------------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_table_lines(&table, 50);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
@@ -214,17 +214,17 @@ fn dynamic_full_width() {
     table
         .set_header(&vec!["Header1", "Header2", "smol"])
         .set_content_arrangement(ContentArrangement::DynamicFullWidth)
-        .set_table_width(80)
+        .set_width(80)
         .add_row(&vec!["This is a short line", "small", "smol"]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +-----------------------------------+----------------------+-------------------+
 | Header1                           | Header2              | smol              |
 +==============================================================================+
 | This is a short line              | small                | smol              |
 +-----------------------------------+----------------------+-------------------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_table_lines(&table, 80);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
diff --git a/tests/all/custom_delimiter_test.rs b/tests/all/custom_delimiter_test.rs
index f79e462..962d390 100644
--- a/tests/all/custom_delimiter_test.rs
+++ b/tests/all/custom_delimiter_test.rs
@@ -14,7 +14,7 @@ fn full_custom_delimiters() {
         .set_header(&vec!["Header1", "Header2"])
         .set_content_arrangement(ContentArrangement::Dynamic)
         .set_delimiter('-')
-        .set_table_width(40)
+        .set_width(40)
         .add_row(&vec![
             "This shouldn't be split with any logic, since there's no matching delimiter",
             "Test-Test-Test-Test-Test-This_should_only_be_splitted_by_underscore_and not by space or hyphens",
@@ -29,10 +29,10 @@ fn full_custom_delimiters() {
         .set_delimiter('/'),
     ]);
 
-    let column = table.get_column_mut(1).unwrap();
+    let column = table.column_mut(1).unwrap();
     column.set_delimiter('_');
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +-------------------+------------------+
 | Header1           | Header2          |
@@ -56,6 +56,6 @@ fn full_custom_delimiters() {
 |                   | phens or anythin |
 |                   | g else.          |
 +-------------------+------------------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
diff --git a/tests/all/hidden_test.rs b/tests/all/hidden_test.rs
index 7ee9b63..7b6aa4e 100644
--- a/tests/all/hidden_test.rs
+++ b/tests/all/hidden_test.rs
@@ -35,20 +35,20 @@ fn get_table() -> Table {
 
     // Hide the first, third and 6th column
     table
-        .get_column_mut(0)
+        .column_mut(0)
         .unwrap()
         .set_constraint(ColumnConstraint::Hidden);
     table
-        .get_column_mut(2)
+        .column_mut(2)
         .unwrap()
         .set_constraint(ColumnConstraint::Hidden);
     table
-        .get_column_mut(3)
+        .column_mut(3)
         .unwrap()
         .set_constraint(ColumnConstraint::Hidden);
 
     table
-        .get_column_mut(6)
+        .column_mut(6)
         .unwrap()
         .set_constraint(ColumnConstraint::Hidden);
 
@@ -59,7 +59,7 @@ fn get_table() -> Table {
 #[test]
 fn hidden_columns() {
     let table = get_table();
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 ┌──────┬──────────────────────┬────────────────────────┐
 │ smol ┆ Header2              ┆ Header3                │
@@ -77,10 +77,10 @@ fn hidden_columns() {
 #[test]
 fn hidden_columns_with_dynamic_adjustment() {
     let mut table = get_table();
-    table.set_table_width(25);
+    table.set_width(25);
     table.set_content_arrangement(ContentArrangement::Dynamic);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 ┌──────┬────────┬───────┐
 │ smol ┆ Header ┆ Heade │
@@ -115,7 +115,7 @@ fn only_hidden_columns() {
         ColumnConstraint::Hidden,
     ]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 ┌┐
 ╞╡
diff --git a/tests/all/modifiers_test.rs b/tests/all/modifiers_test.rs
index 43713e2..e6b3f4b 100644
--- a/tests/all/modifiers_test.rs
+++ b/tests/all/modifiers_test.rs
@@ -29,6 +29,6 @@ fn utf8_round_corners() {
 │ One One ┆ One Two ┆ One Three │
 ╰─────────┴─────────┴───────────╯";
 
-    println!("{table}");
+    println!("{}", table);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
diff --git a/tests/all/padding_test.rs b/tests/all/padding_test.rs
index 110f98a..4d32ecd 100644
--- a/tests/all/padding_test.rs
+++ b/tests/all/padding_test.rs
@@ -17,12 +17,12 @@ fn custom_padding() {
         .add_row(&vec!["Two One", "Two Two", "Two Three"])
         .add_row(&vec!["Three One", "Three Two", "Three Three"]);
 
-    let column = table.get_column_mut(0).unwrap();
+    let column = table.column_mut(0).unwrap();
     column.set_padding((5, 5));
-    let column = table.get_column_mut(2).unwrap();
+    let column = table.column_mut(2).unwrap();
     column.set_padding((0, 0));
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +-------------------+-----------+-----------+
 |     Header1       | Header2   |Header3    |
diff --git a/tests/all/presets_test.rs b/tests/all/presets_test.rs
index c9f193f..b19a3b9 100644
--- a/tests/all/presets_test.rs
+++ b/tests/all/presets_test.rs
@@ -17,7 +17,7 @@ fn get_preset_table() -> Table {
 fn test_ascii_full() {
     let mut table = get_preset_table();
     table.load_preset(ASCII_FULL);
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +-------+-------+
 | Hello | there |
@@ -26,7 +26,7 @@ fn test_ascii_full() {
 |-------+-------|
 | c     | d     |
 +-------+-------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
 
@@ -34,14 +34,14 @@ fn test_ascii_full() {
 fn test_ascii_no_borders() {
     let mut table = get_preset_table();
     table.load_preset(ASCII_NO_BORDERS);
-    println!("{table}");
+    println!("{}", table);
     let expected = "
  Hello | there
 ===============
  a     | b
 -------+-------
  c     | d";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.trim_fmt(), expected);
 }
 
@@ -49,7 +49,7 @@ fn test_ascii_no_borders() {
 fn test_ascii_borders_only() {
     let mut table = get_preset_table();
     table.load_preset(ASCII_BORDERS_ONLY);
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +---------------+
 | Hello   there |
@@ -58,7 +58,7 @@ fn test_ascii_borders_only() {
 |               |
 | c       d     |
 +---------------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
 
@@ -66,7 +66,7 @@ fn test_ascii_borders_only() {
 fn test_ascii_borders_only_condensed() {
     let mut table = get_preset_table();
     table.load_preset(ASCII_BORDERS_ONLY_CONDENSED);
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +---------------+
 | Hello   there |
@@ -74,7 +74,7 @@ fn test_ascii_borders_only_condensed() {
 | a       b     |
 | c       d     |
 +---------------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }
 
@@ -82,7 +82,7 @@ fn test_ascii_borders_only_condensed() {
 fn test_ascii_horizontal_only() {
     let mut table = get_preset_table();
     table.load_preset(ASCII_HORIZONTAL_ONLY);
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 ---------------
  Hello   there
@@ -91,7 +91,7 @@ fn test_ascii_horizontal_only() {
 ---------------
  c       d
 ---------------";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.trim_fmt(), expected);
 }
 
@@ -99,13 +99,13 @@ fn test_ascii_horizontal_only() {
 fn test_ascii_markdown() {
     let mut table = get_preset_table();
     table.load_preset(ASCII_MARKDOWN);
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 | Hello | there |
 |-------|-------|
 | a     | b     |
 | c     | d     |";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.trim_fmt(), expected);
 }
 
@@ -113,7 +113,7 @@ fn test_ascii_markdown() {
 fn test_utf8_full() {
     let mut table = get_preset_table();
     table.load_preset(UTF8_FULL);
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 ┌───────┬───────┐
 │ Hello ┆ there │
@@ -122,7 +122,7 @@ fn test_utf8_full() {
 ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
 │ c     ┆ d     │
 └───────┴───────┘";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.trim_fmt(), expected);
 }
 
@@ -130,14 +130,14 @@ fn test_utf8_full() {
 fn test_utf8_no_borders() {
     let mut table = get_preset_table();
     table.load_preset(UTF8_NO_BORDERS);
-    println!("{table}");
+    println!("{}", table);
     let expected = "
  Hello ┆ there
 ═══════╪═══════
  a     ┆ b
 ╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌
  c     ┆ d";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.trim_fmt(), expected);
 }
 
@@ -145,7 +145,7 @@ fn test_utf8_no_borders() {
 fn test_utf8_horizontal_only() {
     let mut table = get_preset_table();
     table.load_preset(UTF8_HORIZONTAL_ONLY);
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 ───────────────
  Hello   there
@@ -154,7 +154,7 @@ fn test_utf8_horizontal_only() {
 ───────────────
  c       d
 ───────────────";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.trim_fmt(), expected);
 }
 
@@ -162,11 +162,11 @@ fn test_utf8_horizontal_only() {
 fn test_nothing() {
     let mut table = get_preset_table();
     table.load_preset(NOTHING);
-    println!("{table}");
+    println!("{}", table);
     let expected = "
  Hello  there
  a      b
  c      d";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.trim_fmt(), expected);
 }
diff --git a/tests/all/property_test.rs b/tests/all/property_test.rs
index 4c97c40..1c49715 100644
--- a/tests/all/property_test.rs
+++ b/tests/all/property_test.rs
@@ -140,7 +140,7 @@ prop_compose! {
 
         }
 
-        table.set_table_width(table_width)
+        table.set_width(table_width)
             .set_content_arrangement(arrangement)
             .load_preset(UTF8_FULL)
             .apply_modifier(UTF8_ROUND_CORNERS);
diff --git a/tests/all/simple_test.rs b/tests/all/simple_test.rs
index 5c9c5d5..51eefe9 100644
--- a/tests/all/simple_test.rs
+++ b/tests/all/simple_test.rs
@@ -18,7 +18,7 @@ fn simple_table() {
             "This is awesome",
         ]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +----------------------+----------------------+------------------------+
 | Header1              | Header2              | Header3                |
@@ -41,7 +41,7 @@ fn missing_column_table() {
         .add_row(&vec!["Two One", "Two Two"])
         .add_row(&vec!["Three One"]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +-----------+---------+-----------+
 | Header1   | Header2 | Header3   |
@@ -64,7 +64,7 @@ fn single_column_table() {
         .add_row(&vec!["Two One"])
         .add_row(&vec!["Three One"]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +-----------+
 | Header1   |
diff --git a/tests/all/styling_test.rs b/tests/all/styling_test.rs
index 542221c..09b4684 100644
--- a/tests/all/styling_test.rs
+++ b/tests/all/styling_test.rs
@@ -34,7 +34,7 @@ fn get_preset_table() -> Table {
 fn styled_table() {
     let mut table = get_preset_table();
     table.force_no_tty().enforce_styling();
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 ┌─────────────────────┬──────────────────────┬───────────────────────────────┐
 │\u{1b}[1m Header1             \u{1b}[0m┆\u{1b}[38;5;10m Header2              \u{1b}[39m┆\u{1b}[48;5;0m Header3                       \u{1b}[49m│
@@ -53,7 +53,7 @@ fn no_style_styled_table() {
     let mut table = get_preset_table();
     table.force_no_tty();
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 ┌─────────────────────┬──────────────────────┬───────────────────────────────┐
 │ Header1             ┆ Header2              ┆ Header3                       │
diff --git a/tests/all/utf_8_characters.rs b/tests/all/utf_8_characters.rs
index 9033f2f..15c6d3a 100644
--- a/tests/all/utf_8_characters.rs
+++ b/tests/all/utf_8_characters.rs
@@ -21,7 +21,7 @@ fn multi_character_utf8_symbols() {
             "✅",
         ]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +----------------------+----------------------+------------------------+
 | Header1              | Header2              | Header3                |
@@ -40,12 +40,12 @@ fn multi_character_utf8_symbols() {
 fn multi_character_utf8_word_splitting() {
     let mut table = Table::new();
     table
-        .set_table_width(8)
+        .set_width(8)
         .set_content_arrangement(ContentArrangement::Dynamic)
         .set_header(&vec!["test"])
         .add_row(&vec!["abc✅def"]);
 
-    println!("{table}");
+    println!("{}", table);
     let expected = "
 +------+
 | test |
@@ -54,6 +54,6 @@ fn multi_character_utf8_word_splitting() {
 | ✅de |
 | f    |
 +------+";
-    println!("{expected}");
+    println!("{}", expected);
     assert_eq!("\n".to_string() + &table.to_string(), expected);
 }