pub alignment: usize,
}
-// INDENT_BUFFER.len() = 80
+// INDENT_BUFFER.len() = 81
const INDENT_BUFFER_LEN: usize = 80;
const INDENT_BUFFER: &str =
- "\n ";
+ "\n ";
+
impl Indent {
pub fn new(block_indent: usize, alignment: usize) -> Indent {
Indent {
pub fn indented(indent: Indent, config: &Config) -> Shape {
Shape {
- width: config.max_width().checked_sub(indent.width()).unwrap_or(0),
+ width: config.max_width().saturating_sub(indent.width()),
indent,
offset: indent.alignment,
}
pub fn with_max_width(&self, config: &Config) -> Shape {
Shape {
- width: config
- .max_width()
- .checked_sub(self.indent.width())
- .unwrap_or(0),
+ width: config.max_width().saturating_sub(self.indent.width()),
..*self
}
}
- pub fn offset(width: usize, indent: Indent, offset: usize) -> Shape {
- Shape {
- width,
- indent,
- offset,
- }
- }
-
pub fn visual_indent(&self, extra_width: usize) -> Shape {
let alignment = self.offset + extra_width;
Shape {
pub fn rhs_overhead(&self, config: &Config) -> usize {
config
.max_width()
- .checked_sub(self.used_width() + self.width)
- .unwrap_or(0)
+ .saturating_sub(self.used_width() + self.width)
}
pub fn comment(&self, config: &Config) -> Shape {
let width = min(
self.width,
- config
- .comment_width()
- .checked_sub(self.indent.width())
- .unwrap_or(0),
+ config.comment_width().saturating_sub(self.indent.width()),
);
Shape { width, ..*self }
}
+
+ pub fn to_string_with_newline(&self, config: &Config) -> Cow<'static, str> {
+ let mut offset_indent = self.indent;
+ offset_indent.alignment = self.offset;
+ offset_indent.to_string_inner(config, 0)
+ }
}
#[cfg(test)]