Struct Requirement

Source
pub struct Requirement { /* private fields */ }
Expand description

A requirement is a document used to describe a system.

It can represent a user requirement, a specification, etc. Requirements can have dependencies between them, such that one requirement satisfies, fulfils, verifies (etc.) another requirement.

Implementations§

Source§

impl Requirement

Source

pub fn new(hrid: Hrid, content: String) -> Self

Construct a new Requirement from a human-readable ID and its content.

A new UUID is automatically generated.

Source

pub fn content(&self) -> &str

The body of the requirement.

This should be a markdown document.

Source

pub const fn tags(&self) -> &BTreeSet<String>

The tags on the requirement

Source

pub fn set_tags(&mut self, tags: BTreeSet<String>)

Set the tags on the requirement.

this replaces any existing tags.

Source

pub fn add_tag(&mut self, tag: String) -> bool

Add a tag to the requirement.

returns ‘true’ if a new tag was inserted, or ‘false’ if it was already present.

Source

pub const fn hrid(&self) -> &Hrid

The human-readable identifier for this requirement.

In normal usage these should be stable

Source

pub const fn uuid(&self) -> Uuid

The unique, stable identifier of this requirement

Source

pub const fn created(&self) -> DateTime<Utc>

When the requirement was first created

Source

pub fn fingerprint(&self) -> String

Returns a value generated by hashing the content of the Requirement.

Any change to the requirement will change the fingerprint. This is used to determine when links are ‘suspect’. Meaning that because a requirement has been modified, related or dependent requirements also need to be reviewed to ensure consistency.

Source

pub fn add_parent( &mut self, parent_id: Uuid, parent_info: Parent, ) -> Option<Parent>

Add a parent to the requirement, keyed by UUID.

Source

pub fn parents(&self) -> impl Iterator<Item = (Uuid, &Parent)>

Return an iterator over the requirement’s ‘parents’

Source

pub fn parents_mut(&mut self) -> impl Iterator<Item = (Uuid, &mut Parent)>

Return a mutable iterator over the requirement’s ‘parents’

Source

pub fn load(path: &Path, hrid: String) -> Result<Self, LoadError>

Reads a requirement from the given file path.

Note the path here is the path to the directory. The filename is determined by the HRID

§Errors

Returns an error if the file does not exist, cannot be read from, or has malformed YAML frontmatter.

Source

pub fn save(&self, path: &Path) -> Result<()>

Writes the requirement to the given file path. Creates the file if it doesn’t exist, or overwrites it if it does.

Note the path here is the path to the directory. The filename is determined by the HRID.

§Errors

This method returns an error if the path cannot be written to.

Trait Implementations§

Source§

impl Clone for Requirement

Source§

fn clone(&self) -> Requirement

Returns a duplicate 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 Debug for Requirement

Source§

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

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

impl PartialEq for Requirement

Source§

fn eq(&self, other: &Requirement) -> 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 StructuralPartialEq for Requirement

Auto Trait Implementations§

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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, 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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more