papergrid
Papergrid is a core library to print a table
0.18.0
36M downloads/mo
#1492 most downloaded on crates.io
zhiburt/tabled
What this package is like to depend on
Last release 2 months ago
31 May 2026
Release timing varies
gaps range from 2 weeks to 12 months
Some releases are documented
notes for 17 of 41 stable releases
2 versions withdrawn
withdrawn after publishing
6 years old
43 releases · first in 2020
1 release in the last 12 months
see the full history below
Release timeline
43 releases · Mar 2020 to May 2026Releases
latest 43-
0.18.031 May 2026Release notes
Open source →Added
- Added
#[tabled(display(Type, "function", arg1, arg2))]- a derive helper (propoused by @georgewhewell). - Added
Table::kv- a new type of table layout. - Added new
Spanlogic with negative and 0 spans. - Added
LineText::alignto stick text on border to specific location. - Added
LayoutIteratorto navigateTable::kveasier. - Added
Tabledimplementation forOption<T>.
Changed
- Renamed
#[tabled(display_with)]into#[tabled(display)]. - Changed MSRV to the 1.83.
- Removed owo-colors dependency.
- Migrated owo-colors to 3.5 (by @joshtriplett).
- Migrated heck to 0.5 (by @marxin).
- Migrated syn to 2.0 (By @wyatt-herkamp).
Fixed
- Fixed
clippyissues (by @joshtriplett).
- Added
-
0.17.004 Jun 2025Release notes
Open source →Added
- Added
Color::rgb_fg,Color::rgb_bg(by @k86td) - Added
ObjectIterator: so things likeRows::new(1..10).step_by(2)be possible. - Added support for
Rows::last() + 100andColumns::last() + 100add operation. - Added
left|rightspecifiers toPriorityMaxandPriorityMin. - Added
Priorityfactory to create different priorities. Basically a more convinient way. - Added a descriptive error message to
testing_table::assert_table. - Added
Builder::from(HashMap::new())implementation. - Added
CleanCharset::clean("")function for cases where we build a table byBuilder.
Changed
- Switched back to upstream
unicode-widthcrate (by @joshtriplett). - Migrated from proc-macro-error to proc-macro-error2 (by @welpo).
- Refactorings to improve code quality further.
- Made Charset::clean method more presise so we can hopefully work with latest
unicode-width. - Improved Wrap algorithm. As it was misstreating new lines characters.
- Splited
PaddingtoPaddingandPaddingColor. - Splited
MargintoMarginandMarginColor. - Changed
Highlightinterface. - Changed
BorderandBorderColorimplementation when applied to table, so it sets a frame rather then all cells. - Renamed
DisableintoRemove. - Set CI MSRV check to 1.66.
Fixed
- Fixed docs (by @joshtriplett).
- Fixed docs (by @akiomik).
- Fixed clippy (by @akiomik).
- Added absent license in
testing_table(by @michel-slm). - Fix removal of 1st line in
Theme::remove_horizontal_lineswhen used fromTheme::from(Style::*). - Fix
Disable::rowissue when it was not deleting a row.
- Added
-
0.15.024 Apr 2025Release notes
Open source →Added
- Added
Table::modifyas an option toModifyusage, which make cleaner code. - Added more features to
themes::Theme. - Added a new setting
Reverseto reverse the table. - Added vertical support for
LineText. - Added
ByContentlocator. - Added
ByConditionlocator. - Added
Locatorfactory forLocations. - Added tabled features to all subprojects to be able to reduce binary size.
Changed
- Move
Styleto const implementation (it involved changes toBorder/BorderColorand more related subjects). - Added a basic implementation for a render.
- Added a new
Style(by @Brijeshkrishna). - Refactored a
Buildermethods (by @CouldBeFree) - Changed
ColumnNamesinterface. - Changed
LineTextinterface. - Changed
IntoRecordsinterface. - Reordered
TableOptioninterface. - Renamed
BorderTexttoLineText. - Renamed
BorderChartoLineChar. - Renamed
RawStyletothemes::Theme. - Renamed
LocatortoLocation. - Renamed
papergrid::Colortrait toANSIFmt. - Renamed
papergrid::StaticColortrait toANSIStr. - Renamed
papergrid::ColorBuftrait toANSIBuf. - Renamed
colorfeature toansi.
Fixed
- Fix
IndexBuilder::is_emptyfunction (by @pjhades). - Fix a clippy warning in
tabled_derive. - Fix spelling mistakes (by @oliashish).
- Fix spelling mistakes (by @Kobzol).
- Added
-
0.14.007 Feb 2025Release notes
Open source →Added
- Added
TableOption::hint_changemethod as an optimization vector.
Changed
ColumnNamesinterface was changed.
Fixed
ColumnNamesalignment issue.
- Added
-
0.13.022 Nov 2024Release notes
Open source →Added
- Added
settings::Dupto toplicate content. - Added
settings::themes::ColumnNamesto set text on border (adjusted to cells). - Added
Xorimplementation forColor. - Added
Colorizationto set colors of table by a pattern.
- Added
-
0.12.005 Aug 2024Release notes
Open source →Added
Changed
- Made a list of changes to
tabled. - Made a list of changes to
papergridinterface.
Fixed
- Fixed
PoolTablevertical intersection issue.
- Made a list of changes to
-
0.11.020 Dec 2023Release notes
Open source →Added
- Created
static_tablea macro to build tables at compile time. - Created
ron_to_tableformat conversion library. - Added
IterTablea table with a different backend logic. - Added
CompactTablea table with a different backend logic. - Added
PoolTablea table with a different backend logic. - Added
tabled(display_with("function", arg1, arg2))custom arguments support. - Added
Splitsetting fortabled::Table(by @IsaacCloos). - Added more property based tests (by @arunma)
- Added dependabot integration (by @danieleades)
- Added MSRV checks to CI (by @danieleades)
- Documentation improvements (by @IsaacCloos).
- Documentation improvements (by @jondot).
Changed
- Made a different interface for
table_to_html. - Made a list of changes to
tabledinterface. - Made a list of changes to
papergridinterface. - Made a list of changes to
json_to_tableinterface. - Comparison benchmarks were moved to the
masterbranch.
Fixed
- Fixed
Tabledmacros path issue (by @zjp-CN). - Fixed header issue in
tabled_to_html(by @MRoci). - Fixed
Rotate::Left/Rightissue. - Fixed a few issues in
json_to_table. - Fixed
Tabledderive macro issue withskip+orderusage. - Fixed
Width::wrap().keep_words()issue. - Fixed a few clippy warnings (by @danieleades)
- Fixed typos (by Elric Milon).
- Fixed typos (by @fn-bruce)
- Fixed typos (by @fa993)
- Added missing linence files by @michel-slm
- Created
-
0.10.024 Jul 2023Release notes
Open source →Added
- Added
Shadowconfiguration to create a margin which would look like a 'shadow'. - Added
table_to_htmlcrate to build anHTMLfrom aTable. - Added default list of colors to
Colorsuch asColor::RED,Color::BLUEetc. - Added a new style
Style::sharpby @wfxr.
Changed
- Bumped
ansi-strin hope it being more effective.
Fixed
- docs.rs build issue.
- Added
-
0.9.102 Jun 2023Nothing published for this version
-
0.9.023 Apr 2023Release notes
Open source →Added
- Macros
row!andcol!by @IsaacCloos. - Added
Panel::verticalto create a vertically spanned panels. - Added
Span::rowto create vertically spanned cells. - Added
Mergeto combine cells with the same content together viaSpan. - Added
ByColumnNamelocator to target columns via name and use it asObject. - Added
VerticalLineto set custom vertical lines. - Added
Heightstructure to control table/cell height. - Added
BorderCharto set a char by an arbitrary offset on a split horizonta/vertical lines. - Added support for
fmt::*settings when called withformat/println. - Created
json_to_tablecrate to convert json into table. papergridhas got a few new functions.
Changed
papergridwas restructured to be more generic in regard of underlying data types.Table::withfunction now doesn't consume the table but called by reference&mut.- impl
TableOptionforAlignment. - impl
TableOptionforPadding. - impl
CellOptionforString. Wraplogic was changed specifically withcolorfeature.Wrapnow recognizes hyperlinks (by @Dan Davison).Tabledtrait now returnsstd::borrow::Cowinstead ofString.
Fixed
- Fixed issues in
Width::wraplogic. (one found by @Dan Davison).
- Macros
-
0.8.212 Apr 2023Nothing published for this version
-
0.8.112 Apr 2023Nothing published for this version
-
0.8.011 Apr 2023Release notes
Open source →Added
- Created
#[tabled(order = 2)]attribute to support reordering of fields. - Created
#[tabled(rename_all = "UPPERCASE")]attribute to rename columns. - Created
#[tabled(display_width("some_func", args))]attribute to being able to call functions with&selfargument. - Created
derivefeature to hideTablemacro behind it. - Created
Object::intersectmethod. - Created
Object::inversemethod. - Created
width::Percentto set width not in absolute values. - Created
PaddingColorto colorizePadding. - Created
MarginColorto colorizeMargin. - Added
Prioritystrategy forWidth. - Added
Style::correct_spansfunctions to correct borders when used with spans.. - Added
HighlightColoreda version ofHighlightwhich supports coloring. - Added
ModifyObjecttrait to be likeModify::new. - Added
Color,BorderColoredandRawStyleColoredto colorize borders more effectively. - Added
Style::linessetter so you it's possible to override not only header.
Changed
- Performance was improved overall.
- Removed a trailing
\nfromfmt::Displayoutput. - Changed default horizontal alignment from
CentertoLeft. (generally because it's more effitient in basic case) - Changed a definition of
CellChangetrait. - Changed
Modify; it must be more effitient when used withoutObjectmethods. - Changed public methods of
Builderto use&mut selfintestead ofself. - Changed logic of
Wrap::keep_words. - Changed logic of
Truncate::suffix. - Removed
Style::header_*methods. - Renamed
MaxWidthtoWidth. - Renamed
CustomStyletoStyle. - Renamed
StyleConfigtoRawStyle. - Renamed
Style::*_offmethods toStyle::off_*.
Fixed
- Fixed a list of issues with coloring
- Fixed
Styleusage, some methods were not influenceTablein some cases. - Fixed
\thandling inWidthfunctions. - Improved documentation.
- Refactorings.
- Created
-
0.7.118 Oct 2022Nothing published for this version
-
0.7.018 Oct 2022 withdrawnRelease notes
Open source →Added
- Created a tabled logo which is used on docs.rs.
- Added a
Justifytype which sets all columns to the same width. Table::buildermethod which can be used to modify the default layout of table built fromTabled.- Added
IndexBuilderwhich can be used to transpose the table. - Added support for
Bordercoloring. - Added
Style::framefunction which returns border. - Added
Columns::first,Columns::lastfunctions. Sub,Addimplementations forFirstRowandLastRow.- Added
Style::roundedstyle.
Changed
- Default height set to 0.
- Renamed
TopBorderTexttoBorderText. - Removed
objectmodule from public export. - Deprecate
object::Fullin regard ofobject::Segment::all(). - Improved documentation.
- Refactorings.
Fixed
- Fix
Stylerendering issues. - Fix rendering when
PanelandSpans are used. - Fix
Stylerendering of single row and single column tables.
-
0.6.118 Oct 2022 withdrawnRelease notes
Open source →Fixed
- Fix
MinStylelogic when used withSpan. - Fix
MinStyle,MaxStylelogic when used with zeroSpantable.
- Fix
-
0.6.030 Sep 2022Release notes
Open source →Added
- Added
MinWidthtype, which changes cell widths in case it's necessary. MinWidthandMaxWidthcan be used in combination in order to set a table width.- Added
Spansupport. It cab be used to set a column span. - Added
Extracttype by @IsaacCloos. It can be used to extract a segment from a table. - Added an option to set padding character by @kozmod.
Marginby @kozmod. Can be used to set a indent of the whole table.- Added a support for custom target in
Highlight. Bordercan be used directly to set a cell border.- A list of format settings:
TrimStrategy,AlignmentStrategy. \tprocessing.- Added a list of examples.
Changed
#[field]#[header]inTabledmacro was renamed to#[tabled].- A default behaviour of alignment was changed.
Indentrenamed toPaddingby @kozmod.- A deprecated style constants were removed.
objectmodule was removed from module prelude.Formatfunctions were refactored. So the interface was changed.Alignment::center_horizontalwas renamed toAlignment::center.
Fixed
- Fix
Stylerendering issues. - Fix
Panelrendering issues. - Fix
Spanrendering issues.
- Added
-
0.5.122 Jul 2022Nothing published for this version
-
0.5.022 Jul 2022Release notes
Open source →Added
CustomStyletype which now handles modifications of styles.TopBorderTexttype which can be used to write a text on a bottom border.Wrap::keep_wordsoprtion in order to not split words in a middle while doing a wrap.- Add more default styles
Style::dots(),Style::re_structured_text(),Style::extended()
Changed
MaxWidthinterface.- Constants in
stylemodule now marked deprecated in regard of const functions as more ergonomic choice.
Fixed
- Fix rendering of single column table with full style (with horizontal split lines)
-
0.4.016 May 2022Release notes
Open source →Added
Styleconstants likeStyle::ASCII,Style::PSEUDO,Highlightmodificator which does highlight of any combination of cellsTableIteratorExttrait by @24secondsConcatmodificator by @senk8- A
Table::shapemethod which returns table's size
Changed
Tabledtrait now requires aLENGTHconstant.Stylefunctions were deprecated.- Allow border changes for any cell.
Fixed
- Fix
fmt::Displayrequirements on hidden fields in inline mode - README.md fix by @panarch
- Refactorings
-
0.3.002 Apr 2022Release notes
Open source →Added
ExpandedDisplaya different view of data structures. It eases viewing structures with a lot a fields. Proposed by @sd2kMaxWidth::wrappinga wrapping mechanism. Setting it will make text wrap to next line after reaching limit.
Changed
MaxWidthinterface changed in regard to supportwrapping. Now oldMaxWidthlogic can be called byMaxWidth::truncating.
Fixed
- Fix an issue that setting
Alignmentwas changingIndentsettings.
-
0.2.110 Feb 2022Release notes
Open source →Added
- Add
MaxWidthoption for cells - Add
#[header(inline)]attribute to inline internal data structures which implementTabledtrait - Add blank
Tabledimplementation for String - Add
#[header(inline)]example
Changed
- Use
ansi-cutinstead ofconsoleto truncate string - Switch to
github CIinstead oftravis.cibecause free credit limit was reached
Fixed
- A sublte refactoring in
tabled_derive
- Add
-
0.2.030 Dec 2021Release notes
Open source →Added
- Add
Tabletype instead oftable!macros - Consider lambdas Fn(&str) -> String as format options
- Add basic usage example
Changed
- Removed
table!macros.
Fixed
- Improved performance in papergrid; Now it makes 100 allocs on basic example where previously 400!
- Add
-
0.1.2310 Sep 2021Nothing published for this version
-
0.1.2206 Sep 2021Nothing published for this version
-
0.1.2114 Jul 2021Nothing published for this version
-
0.1.2014 Jul 2021Nothing published for this version
-
0.1.1914 Jul 2021Nothing published for this version
-
0.1.1814 Jul 2021Nothing published for this version
-
0.1.1714 Jul 2021Nothing published for this version
-
0.1.1623 Jun 2021Nothing published for this version
-
0.1.1518 Jun 2021Nothing published for this version
-
0.1.1418 Jun 2021Nothing published for this version
-
0.1.1307 Jun 2021Nothing published for this version
-
0.1.1107 Jun 2021Nothing published for this version
-
0.1.1006 Jun 2021Nothing published for this version
-
0.1.904 Jun 2021Nothing published for this version
-
0.1.802 Jun 2021Nothing published for this version
-
0.1.701 Jun 2021Nothing published for this version
-
0.1.301 Jun 2021Release notes
Open source →Added
- Add a
Disablesetting for removing rows/column out of the grid Objectcombination viaand(),not()methods for targeting more thoroughly- Modification of default
Styles - Add
#[header(hidden)]attribute to hide variants and fields
- Add a
-
0.1.231 May 2021Nothing published for this version
-
0.1.131 May 2021Nothing published for this version
-
0.1.023 Mar 2020Nothing published for this version