Struct Bodies

Source
pub struct Bodies<'a> { /* private fields */ }
Expand description

A collection of body paragraphs from a commit message.

This struct represents multiple body paragraphs that make up the content of a commit message.

§Examples

use mit_commit::{Bodies, Body, Subject};

let bodies: Vec<Body> = Vec::default();
assert_eq!(None, Bodies::from(bodies).first());

let bodies: Vec<Body> = vec![
    Body::from("First"),
    Body::from("Second"),
    Body::from("Third"),
];
assert_eq!(Some(Body::from("First")), Bodies::from(bodies).first());

Implementations§

Source§

impl Bodies<'_>

Source

pub fn first(&self) -> Option<Body<'_>>

Get the first Body in this list of Bodies

§Arguments
  • self - The Bodies collection to get the first element from
§Returns

The first Body in the list, or None if the list is empty

§Examples
use mit_commit::{Bodies, Body, Subject};

let bodies: Vec<Body> = Vec::default();
assert_eq!(None, Bodies::from(bodies).first());

let bodies: Vec<Body> = vec![
    Body::from("First"),
    Body::from("Second"),
    Body::from("Third"),
];
assert_eq!(Some(Body::from("First")), Bodies::from(bodies).first());
Source

pub fn iter(&self) -> Iter<'_, Body<'_>>

Iterate over the Body in the Bodies

§Arguments
  • self - The Bodies collection to iterate over
§Returns

An iterator over the Body elements in the Bodies collection

§Examples
use mit_commit::{Bodies, Body};
let bodies = Bodies::from(vec![
    Body::from("Body 1"),
    Body::from("Body 2"),
    Body::from("Body 3"),
]);
let mut iterator = bodies.iter();

assert_eq!(iterator.next(), Some(&Body::from("Body 1")));
assert_eq!(iterator.next(), Some(&Body::from("Body 2")));
assert_eq!(iterator.next(), Some(&Body::from("Body 3")));
assert_eq!(iterator.next(), None);

Trait Implementations§

Source§

impl<'a> Clone for Bodies<'a>

Source§

fn clone(&self) -> Bodies<'a>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Bodies<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> Default for Bodies<'a>

Source§

fn default() -> Bodies<'a>

Returns the “default value” for a type. Read more
Source§

impl Display for Bodies<'_>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Render the Bodies as text

§Arguments
  • self - The Bodies collection to format
  • f - The formatter to write the formatted string to
§Returns

A string representation of the Bodies with each Body separated by double newlines

§Examples
use mit_commit::{Bodies, Body};
let bodies = Bodies::from(vec![
    Body::from("Body 1"),
    Body::from("Body 2"),
    Body::from("Body 3"),
]);

assert_eq!(format!("{}", bodies), "Body 1\n\nBody 2\n\nBody 3");
Source§

impl From<Bodies<'_>> for String

Source§

fn from(bodies: Bodies<'_>) -> Self

Convert a Bodies collection to a String

§Arguments
  • bodies - The Bodies collection to convert to a string
§Returns

A string representation of the Bodies with each Body separated by double newlines

§Examples
use mit_commit::{Bodies, Body};
let bodies = Bodies::from(vec![
    Body::from("Body 1"),
    Body::from("Body 2"),
    Body::from("Body 3"),
]);

assert_eq!(String::from(bodies), "Body 1\n\nBody 2\n\nBody 3");
Source§

impl<'a> From<Vec<Body<'a>>> for Bodies<'a>

Source§

fn from(bodies: Vec<Body<'a>>) -> Self

Combine a Vec of Body into Bodies

§Arguments
  • bodies - A vector of Body objects to be combined into a Bodies collection
§Returns

A new Bodies instance containing all the provided Body objects

§Examples
use mit_commit::{Bodies, Body};
let bodies = Bodies::from(vec![
    Body::from("Body 1"),
    Body::from("Body 2"),
    Body::from("Body 3"),
]);
let mut iterator = bodies.into_iter();

assert_eq!(iterator.next(), Some(Body::from("Body 1")));
assert_eq!(iterator.next(), Some(Body::from("Body 2")));
assert_eq!(iterator.next(), Some(Body::from("Body 3")));
assert_eq!(iterator.next(), None);
Source§

impl<'a> From<Vec<Fragment<'a>>> for Bodies<'a>

Source§

fn from(bodies: Vec<Fragment<'a>>) -> Self

Convert a vector of Fragment to Bodies

This extracts all Body fragments from the input, skipping the first one (which is typically the subject line) and any trailers at the end of the message.

§Arguments
  • bodies - A vector of Fragment objects to extract Body fragments from
§Returns

A new Bodies instance containing only the Body fragments that are not the subject line and not trailers

§Examples
use mit_commit::{Bodies, Body, Fragment};

let fragments = vec![
    Fragment::Body(Body::from("Subject Line")),
    Fragment::Body(Body::default()),
    Fragment::Body(Body::from("Some content in the body")),
    Fragment::Body(Body::default()),
    Fragment::Body(Body::from("Co-authored-by: Someone <someone@example.com>")),
];

let bodies = Bodies::from(fragments);

assert_eq!(
    bodies,
    Bodies::from(vec![
        Body::default(),
        Body::from("Some content in the body"),
    ])
);
Source§

impl<'a> IntoIterator for &'a Bodies<'a>

Source§

fn into_iter(self) -> Self::IntoIter

Iterate over the Body in the Bodies

§Arguments
  • self - A reference to the Bodies collection to iterate over
§Returns

An iterator over references to the Body elements in the Bodies collection

§Examples
use std::borrow::Borrow;

use mit_commit::{Bodies, Body};
let bodies = Bodies::from(vec![
    Body::from("Body 1"),
    Body::from("Body 2"),
    Body::from("Body 3"),
]);
let bodies_ref = bodies.borrow();
let mut iterator = bodies_ref.into_iter();

assert_eq!(iterator.next(), Some(&Body::from("Body 1")));
assert_eq!(iterator.next(), Some(&Body::from("Body 2")));
assert_eq!(iterator.next(), Some(&Body::from("Body 3")));
assert_eq!(iterator.next(), None);
Source§

type IntoIter = Iter<'a, Body<'a>>

Which kind of iterator are we turning this into?
Source§

type Item = &'a Body<'a>

The type of the elements being iterated over.
Source§

impl<'a> IntoIterator for Bodies<'a>

Source§

fn into_iter(self) -> Self::IntoIter

Iterate over the Body in the Bodies

§Arguments
  • self - The Bodies collection to consume and iterate over
§Returns

An iterator that takes ownership of the Bodies collection

§Examples
use mit_commit::{Bodies, Body};
let bodies = Bodies::from(vec![
    Body::from("Body 1"),
    Body::from("Body 2"),
    Body::from("Body 3"),
]);
let mut iterator = bodies.into_iter();

assert_eq!(iterator.next(), Some(Body::from("Body 1")));
assert_eq!(iterator.next(), Some(Body::from("Body 2")));
assert_eq!(iterator.next(), Some(Body::from("Body 3")));
assert_eq!(iterator.next(), None);
Source§

type Item = Body<'a>

The type of the elements being iterated over.
Source§

type IntoIter = IntoIter<Body<'a>>

Which kind of iterator are we turning this into?
Source§

impl<'a> PartialEq for Bodies<'a>

Source§

fn eq(&self, other: &Bodies<'a>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> Eq for Bodies<'a>

Source§

impl<'a> StructuralPartialEq for Bodies<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Bodies<'a>

§

impl<'a> RefUnwindSafe for Bodies<'a>

§

impl<'a> Send for Bodies<'a>

§

impl<'a> Sync for Bodies<'a>

§

impl<'a> Unpin for Bodies<'a>

§

impl<'a> UnwindSafe for Bodies<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.