the-key 0.1.1

A simple and fast key management tool for key-value stores
Documentation
pub fn format_struct(
  parts: &[super::KeyPartItem],
  extensions: Option<&[super::KeyExtensionsItem]>,
  key: Option<(&[u8], usize)>,
  f: &mut std::fmt::Formatter<'_>,
) -> std::fmt::Result {
  let mut prefix_len: usize = 0;

  let mut parts = parts
    .iter()
    .map(|(name, bytes)| {
      prefix_len += bytes.len();

      format!("{}{:?}", name, bytes)
    })
    .collect::<Vec<String>>();

  if let Some(extensions) = extensions {
    for (name, bytes) in extensions.iter() {
      prefix_len += bytes.len();

      parts.push(format!("{}{:?}", name, bytes));
    }
  }

  if let Some(key) = key {
    parts.push(format!("Key={:?}", &key.0[prefix_len..]));
  }

  if f.alternate() {
    let mut i: usize = 0;

    for part in parts.iter() {
      let new_line_symbol = match i {
        0 => "",
        _ => "\n",
      };
      let angle_symbol = match i {
        0 => "",
        _ => "",
      };
      let padding = " ".repeat(i);

      i += 2;

      let write_result = write!(f, "{}{}{}{}", new_line_symbol, padding, angle_symbol, part);

      if write_result.is_err() {
        return write_result;
      }
    }
  } else {
    return write!(f, "{}", parts.join(" -> "));
  }

  Ok(())
}