Skip to main content

StepKeyword

Enum StepKeyword 

Source
pub enum StepKeyword {
    Given,
    When,
    Then,
    And,
    But,
}
Expand description

Keyword used to categorise a step definition.

The enum includes And and But variants for completeness, but feature parsing resolves them against the preceding Given/When/Then using the resolve method.

Variants§

§

Given

Setup preconditions for a scenario.

§

When

Perform an action when testing behaviour.

§

Then

Assert the expected outcome of a scenario.

§

And

Additional conditions that share context with the previous step.

§

But

Negative or contrasting conditions.

Implementations§

Source§

impl StepKeyword

Source

pub const fn as_str(&self) -> &'static str

Return the keyword as a string slice.

§Examples
use rstest_bdd_patterns::StepKeyword;

assert_eq!(StepKeyword::Given.as_str(), "Given");
assert_eq!(StepKeyword::And.as_str(), "And");
Source

pub fn resolve(self, prev: &mut Option<StepKeyword>) -> StepKeyword

Resolve conjunctions to the semantic keyword of the previous step.

When the current keyword is And or But, returns the value stored in prev. For primary keywords (Given/When/Then), updates prev and returns the keyword unchanged.

Callers typically seed prev with the first primary keyword in a sequence, defaulting to Given when none is found.

§Examples
use rstest_bdd_patterns::StepKeyword;

let mut prev = Some(StepKeyword::Given);
assert_eq!(StepKeyword::And.resolve(&mut prev), StepKeyword::Given);
assert_eq!(StepKeyword::When.resolve(&mut prev), StepKeyword::When);
assert_eq!(prev, Some(StepKeyword::When));

Trait Implementations§

Source§

impl Clone for StepKeyword

Source§

fn clone(&self) -> StepKeyword

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 StepKeyword

Source§

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

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

impl FromStr for StepKeyword

Source§

type Err = StepKeywordParseError

The associated error which can be returned from parsing.
Source§

fn from_str(value: &str) -> Result<StepKeyword, <StepKeyword as FromStr>::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for StepKeyword

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for StepKeyword

Source§

fn eq(&self, other: &StepKeyword) -> 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 TryFrom<&str> for StepKeyword

Source§

type Error = StepKeywordParseError

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

fn try_from( value: &str, ) -> Result<StepKeyword, <StepKeyword as TryFrom<&str>>::Error>

Performs the conversion.
Source§

impl TryFrom<StepType> for StepKeyword

Source§

fn try_from( ty: StepType, ) -> Result<StepKeyword, <StepKeyword as TryFrom<StepType>>::Error>

Convert a parsed Gherkin StepType to a StepKeyword.

§Gherkin coupling

The gherkin crate (v0.14) defines StepType with only Given, When, and Then variants. Gherkin syntax also includes And and But keywords, but the parser resolves these to the preceding primary keyword before exposing them via StepType.

If a future gherkin release adds new StepType variants (e.g., And, But, or others), the #[expect(unreachable_patterns)] guard below will trigger a compiler warning, prompting an update to this match arm.

Source§

type Error = UnsupportedStepType

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

impl Copy for StepKeyword

Source§

impl Eq for StepKeyword

Source§

impl StructuralPartialEq for StepKeyword

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> AnyEq for T
where T: Any + PartialEq,

Source§

fn equals(&self, other: &(dyn Any + 'static)) -> bool

Source§

fn as_any(&self) -> &(dyn Any + 'static)

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> 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.