struct AstFunctionPrefix<'db> {
visibility: Option<AstVisibility<'db>>,
effects: AstFunctionEffects<'db>,
fn_keyword: Span<'db>,
}Expand description
The prefix parses a fn declaration up until
the fn keyword. That is what we need to see
to know that we should be parsing a function.
Parsing always succeeds with Ok(Some) or errors;
the intent is that you probe with can_eat.
Fields§
§visibility: Option<AstVisibility<'db>>Visibility of the class
effects: AstFunctionEffects<'db>§fn_keyword: Span<'db>Trait Implementations§
Source§impl<'db> Parse<'db> for AstFunctionPrefix<'db>
impl<'db> Parse<'db> for AstFunctionPrefix<'db>
type Output = AstFunctionPrefix<'db>
Source§fn opt_parse(
db: &'db dyn Db,
parser: &mut Parser<'_, 'db>,
) -> Result<Option<Self>, ParseFail<'db>>
fn opt_parse( db: &'db dyn Db, parser: &mut Parser<'_, 'db>, ) -> Result<Option<Self>, ParseFail<'db>>
Parse a single instance of
Self, returning Ok(Some(v)).
Returns Ok(None) if Self was not present or Err(err)
if Self appeared to be present but was ill-formed. Read morefn expected() -> Expected
Source§fn can_eat(db: &'db dyn Db, parser: &Parser<'_, 'db>) -> bool
fn can_eat(db: &'db dyn Db, parser: &Parser<'_, 'db>) -> bool
Speculatively parses to see if we could eat a
Self
without any error. Never consumes tokens nor produces an error.Source§fn eat(
db: &'db dyn Db,
parser: &mut Parser<'_, 'db>,
) -> Result<Self::Output, ParseFail<'db>>
fn eat( db: &'db dyn Db, parser: &mut Parser<'_, 'db>, ) -> Result<Self::Output, ParseFail<'db>>
Parses an instance of
Self from the given Parser, reporting an error if no instance is found.Source§fn eat_comma(
db: &'db dyn Db,
parser: &mut Parser<'_, 'db>,
) -> Result<SpanVec<'db, Self::Output>, ParseFail<'db>>
fn eat_comma( db: &'db dyn Db, parser: &mut Parser<'_, 'db>, ) -> Result<SpanVec<'db, Self::Output>, ParseFail<'db>>
Parse zero-or-more comma-separated instances of
Self returning a vector.
Accepts trailing commas.Source§fn eat_many(
db: &'db dyn Db,
parser: &mut Parser<'_, 'db>,
) -> Result<SpanVec<'db, Self::Output>, ParseFail<'db>>
fn eat_many( db: &'db dyn Db, parser: &mut Parser<'_, 'db>, ) -> Result<SpanVec<'db, Self::Output>, ParseFail<'db>>
Parse zero-or-more instances of
Self returning a vector.Source§fn eat_delimited<T>(
db: &'db dyn Db,
parser: &mut Parser<'_, 'db>,
delimiter: Delimiter,
eat_method: impl FnOnce(&'db dyn Db, &mut Parser<'_, 'db>) -> Result<T, ParseFail<'db>>,
) -> Result<T, ParseFail<'db>>
fn eat_delimited<T>( db: &'db dyn Db, parser: &mut Parser<'_, 'db>, delimiter: Delimiter, eat_method: impl FnOnce(&'db dyn Db, &mut Parser<'_, 'db>) -> Result<T, ParseFail<'db>>, ) -> Result<T, ParseFail<'db>>
Eat a comma separated list of Self, delimited by
delimiter
(e.g., (a, b, c)).Source§fn opt_parse_delimited<T>(
db: &'db dyn Db,
parser: &mut Parser<'_, 'db>,
delimiter: Delimiter,
eat_method: impl FnOnce(&'db dyn Db, &mut Parser<'_, 'db>) -> Result<T, ParseFail<'db>>,
) -> Result<Option<T>, ParseFail<'db>>
fn opt_parse_delimited<T>( db: &'db dyn Db, parser: &mut Parser<'_, 'db>, delimiter: Delimiter, eat_method: impl FnOnce(&'db dyn Db, &mut Parser<'_, 'db>) -> Result<T, ParseFail<'db>>, ) -> Result<Option<T>, ParseFail<'db>>
Parse a delimited list of Self
e.g.,
(a, b, c) or [a, b, c]. Returns None if
the given delimiters indicated by delimiter are not found.Source§fn opt_parse_comma(
db: &'db dyn Db,
parser: &mut Parser<'_, 'db>,
) -> Result<Option<SpanVec<'db, Self::Output>>, ParseFail<'db>>
fn opt_parse_comma( db: &'db dyn Db, parser: &mut Parser<'_, 'db>, ) -> Result<Option<SpanVec<'db, Self::Output>>, ParseFail<'db>>
Parse a comma separated list of Self
Source§fn opt_parse_separated(
db: &'db dyn Db,
parser: &mut Parser<'_, 'db>,
separator: Op,
) -> Result<Option<SpanVec<'db, Self::Output>>, ParseFail<'db>>
fn opt_parse_separated( db: &'db dyn Db, parser: &mut Parser<'_, 'db>, separator: Op, ) -> Result<Option<SpanVec<'db, Self::Output>>, ParseFail<'db>>
Parse a
separator separated list of SelfSource§fn opt_parse_guarded(
guard_op: impl ParseGuard,
db: &'db dyn Db,
parser: &mut Parser<'_, 'db>,
) -> Result<Option<Self::Output>, ParseFail<'db>>
fn opt_parse_guarded( guard_op: impl ParseGuard, db: &'db dyn Db, parser: &mut Parser<'_, 'db>, ) -> Result<Option<Self::Output>, ParseFail<'db>>
If
guard_op appears, then parse SelfSource§impl<'db> Update for AstFunctionPrefix<'db>
impl<'db> Update for AstFunctionPrefix<'db>
Auto Trait Implementations§
impl<'db> Freeze for AstFunctionPrefix<'db>
impl<'db> !RefUnwindSafe for AstFunctionPrefix<'db>
impl<'db> Send for AstFunctionPrefix<'db>
impl<'db> Sync for AstFunctionPrefix<'db>
impl<'db> Unpin for AstFunctionPrefix<'db>
impl<'db> UnsafeUnpin for AstFunctionPrefix<'db>
impl<'db> !UnwindSafe for AstFunctionPrefix<'db>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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