1#![doc(
9 html_logo_url = "https://raw.githubusercontent.com/abs0luty/leftpad/main/logo.png",
10 html_favicon_url = "https://raw.githubusercontent.com/abs0luty/leftpad/main/logo.png"
11)]
12#![cfg_attr(not(test), forbid(clippy::unwrap_used))]
13#![warn(missing_docs, clippy::dbg_macro)]
14#![deny(
15 warnings,
17 future_incompatible,
18 let_underscore,
19 nonstandard_style,
20 rust_2018_compatibility,
21 rust_2018_idioms,
22 rust_2021_compatibility,
23 unused,
24 macro_use_extern_crate,
26 meta_variable_misuse,
27 missing_abi,
28 missing_copy_implementations,
29 missing_debug_implementations,
30 non_ascii_idents,
31 noop_method_call,
32 single_use_lifetimes,
33 trivial_casts,
34 trivial_numeric_casts,
35 unreachable_pub,
36 unsafe_op_in_unsafe_fn,
37 unused_crate_dependencies,
38 unused_import_braces,
39 unused_lifetimes,
40 unused_qualifications,
41 unused_tuple_struct_fields,
42 variant_size_differences,
43 rustdoc::broken_intra_doc_links,
45 rustdoc::private_intra_doc_links,
46 rustdoc::missing_crate_level_docs,
47 rustdoc::private_doc_tests,
48 rustdoc::invalid_codeblock_attributes,
49 rustdoc::invalid_rust_codeblocks,
50 rustdoc::bare_urls,
51 clippy::all,
53 clippy::correctness,
54 clippy::suspicious,
55 clippy::style,
56 clippy::complexity,
57 clippy::perf,
58 clippy::pedantic,
59 clippy::nursery,
60)]
61#![allow(
62 clippy::module_name_repetitions,
63 clippy::too_many_lines,
64 clippy::option_if_let_else
65)]
66
67#[must_use]
84pub fn leftpad(input: &str, width: usize, padding_char: char) -> String {
85 input
86 .chars()
87 .rev()
88 .chain(std::iter::repeat(padding_char))
89 .take(width)
90 .collect::<String>()
91 .chars()
92 .rev()
93 .collect::<String>()
94}