summaryrefslogtreecommitdiffstats
path: root/vendor/pad/README.md
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 18:31:44 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 18:31:44 +0000
commitc23a457e72abe608715ac76f076f47dc42af07a5 (patch)
tree2772049aaf84b5c9d0ed12ec8d86812f7a7904b6 /vendor/pad/README.md
parentReleasing progress-linux version 1.73.0+dfsg1-1~progress7.99u1. (diff)
downloadrustc-c23a457e72abe608715ac76f076f47dc42af07a5.tar.xz
rustc-c23a457e72abe608715ac76f076f47dc42af07a5.zip
Merging upstream version 1.74.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/pad/README.md')
-rw-r--r--vendor/pad/README.md131
1 files changed, 131 insertions, 0 deletions
diff --git a/vendor/pad/README.md b/vendor/pad/README.md
new file mode 100644
index 000000000..cd23d653a
--- /dev/null
+++ b/vendor/pad/README.md
@@ -0,0 +1,131 @@
+# rust-pad [![pad on crates.io](http://meritbadge.herokuapp.com/pad)](https://crates.io/crates/pad) [![Build status](https://travis-ci.org/ogham/rust-pad.svg?branch=master)](https://travis-ci.org/ogham/rust-pad)
+
+
+This is a library for padding strings at runtime.
+
+It provides four helper functions for the most common use cases, and one
+main function to cover the other cases.
+
+### [View the Rustdoc](https://docs.rs/pad)
+
+
+# Installation
+
+This crate works with [Cargo](http://crates.io). Add the following to your `Cargo.toml` dependencies section:
+
+```toml
+[dependencies]
+pad = "0.1"
+```
+
+
+# Padding in the stdlib
+
+**You do not need this crate for simple padding!**
+It’s possible to pad strings using the Rust standard library.
+
+For example, to pad a number with zeroes:
+
+```rust
+// Padding using std::fmt
+assert_eq!("0000012345", format!("{:0>10}", 12345));
+```
+
+You can even use a variable for the padding width:
+
+```rust
+// Padding using std::fmt
+assert_eq!("hello ", format!("{:width$}", "hello", width=12));
+```
+
+The [Rust documentation for `std::fmt`](https://doc.rust-lang.org/std/fmt/)
+contains more examples. The rest of the examples will use the `pad` crate.
+
+
+# Usage
+
+You can pad a string to have a minimum width with the `pad_to_width`
+method:
+
+```rust
+use pad::PadStr;
+println!("{}", "Hi there!".pad_to_width(16));
+```
+
+This will print out “Hi there!” followed by seven spaces, which is the
+number of spaces necessary to bring it up to a total of sixteen characters
+wide.
+
+String length is determined with the
+[unicode_width](https://unicode-rs.github.io/unicode-width/unicode_width/index.html)
+crate, without assuming CJK.
+
+
+## Alignment
+
+By default, strings are left-aligned: any extra characters are added on
+the right. To change this, pass in an `Alignment` value:
+
+```rust
+use pad::{PadStr, Alignment};
+let s = "I'm over here".pad_to_width_with_alignment(20, Alignment::Right);
+```
+
+There are four of these in total:
+
+- **Left**, which puts the text on the left and spaces on the right;
+- **Right**, which puts the text on the right and spaces on the left;
+- **Middle**, which centres the text evenly, putting it slightly to the left if it can’t be exactly centered;
+- **MiddleRight**, as above, but to the right.
+
+
+## Characters
+
+Another thing that’s set by default is the character that’s used to pad
+the strings — by default, it’s space, but you can change it:
+
+```rust
+use pad::PadStr;
+let s = "Example".pad_to_width_with_char(10, '_');
+```
+
+
+## Truncation
+
+Finally, you can override what happens when a value exceeds the width you
+give. By default, the width parameter indicates a *minimum width*: any
+string less will be padded, but any string greater will still be returned
+in its entirety.
+
+You can instead tell it to pad with a maximum value, which will truncate
+the input when a string longer than the width is passed in.
+
+```rust
+use pad::PadStr;
+let short = "short".with_exact_width(10); // "short "
+let long = "this string is long".with_exact_width(10); // "this strin"
+```
+
+
+# A Full Example
+
+All of the above functions delegate to the `pad` function, which you can
+use in special cases. Here, in order to **right**-pad a number with
+**zeroes**, pass in all the arguments:
+
+```rust
+use pad::{PadStr, Alignment};
+let s = "12345".pad(10, '0', Alignment::Right, true);
+```
+
+(The `true` at the end could just as easily be `false`. It’s whether to
+truncate or not.)
+
+
+# A Note on Debugging
+
+One very last point: the width function takes a `usize`, rather than a
+signed number type. This means that if you try to pass in a negative size,
+it’ll wrap around to a positive size, and produce a massive string and
+possibly crash your program. So if your padding calls are failing for some
+reason, this is probably why.