pub struct AnyHasAttrs { /* private fields */ }Implementations§
Source§impl AnyHasAttrs
impl AnyHasAttrs
pub fn new<T>(node: T) -> AnyHasAttrswhere
T: HasAttrs,
Trait Implementations§
Source§impl AstNode for AnyHasAttrs
impl AstNode for AnyHasAttrs
fn can_cast(kind: SyntaxKind) -> bool
fn cast(syntax: SyntaxNode<RustLanguage>) -> Option<AnyHasAttrs>
fn syntax(&self) -> &SyntaxNode<RustLanguage>
Source§fn kind() -> SyntaxKindwhere
Self: Sized,
fn kind() -> SyntaxKindwhere
Self: Sized,
This panics if the
SyntaxKind is not statically known.fn clone_for_update(&self) -> Selfwhere
Self: Sized,
fn clone_subtree(&self) -> Selfwhere
Self: Sized,
Source§impl Clone for AnyHasAttrs
impl Clone for AnyHasAttrs
Source§fn clone(&self) -> AnyHasAttrs
fn clone(&self) -> AnyHasAttrs
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for AnyHasAttrs
impl Debug for AnyHasAttrs
impl Eq for AnyHasAttrs
Source§impl From<ArrayExpr> for AnyHasAttrs
impl From<ArrayExpr> for AnyHasAttrs
Source§fn from(node: ArrayExpr) -> AnyHasAttrs
fn from(node: ArrayExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<AsmClobberAbi> for AnyHasAttrs
impl From<AsmClobberAbi> for AnyHasAttrs
Source§fn from(node: AsmClobberAbi) -> AnyHasAttrs
fn from(node: AsmClobberAbi) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<AsmExpr> for AnyHasAttrs
impl From<AsmExpr> for AnyHasAttrs
Source§fn from(node: AsmExpr) -> AnyHasAttrs
fn from(node: AsmExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<AsmOperandNamed> for AnyHasAttrs
impl From<AsmOperandNamed> for AnyHasAttrs
Source§fn from(node: AsmOperandNamed) -> AnyHasAttrs
fn from(node: AsmOperandNamed) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<AsmOptions> for AnyHasAttrs
impl From<AsmOptions> for AnyHasAttrs
Source§fn from(node: AsmOptions) -> AnyHasAttrs
fn from(node: AsmOptions) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<AssocItem> for AnyHasAttrs
impl From<AssocItem> for AnyHasAttrs
Source§fn from(node: AssocItem) -> AnyHasAttrs
fn from(node: AssocItem) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<AssocItemList> for AnyHasAttrs
impl From<AssocItemList> for AnyHasAttrs
Source§fn from(node: AssocItemList) -> AnyHasAttrs
fn from(node: AssocItemList) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<AwaitExpr> for AnyHasAttrs
impl From<AwaitExpr> for AnyHasAttrs
Source§fn from(node: AwaitExpr) -> AnyHasAttrs
fn from(node: AwaitExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<BecomeExpr> for AnyHasAttrs
impl From<BecomeExpr> for AnyHasAttrs
Source§fn from(node: BecomeExpr) -> AnyHasAttrs
fn from(node: BecomeExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<BinExpr> for AnyHasAttrs
impl From<BinExpr> for AnyHasAttrs
Source§fn from(node: BinExpr) -> AnyHasAttrs
fn from(node: BinExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<BlockExpr> for AnyHasAttrs
impl From<BlockExpr> for AnyHasAttrs
Source§fn from(node: BlockExpr) -> AnyHasAttrs
fn from(node: BlockExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<BreakExpr> for AnyHasAttrs
impl From<BreakExpr> for AnyHasAttrs
Source§fn from(node: BreakExpr) -> AnyHasAttrs
fn from(node: BreakExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<CallExpr> for AnyHasAttrs
impl From<CallExpr> for AnyHasAttrs
Source§fn from(node: CallExpr) -> AnyHasAttrs
fn from(node: CallExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<CastExpr> for AnyHasAttrs
impl From<CastExpr> for AnyHasAttrs
Source§fn from(node: CastExpr) -> AnyHasAttrs
fn from(node: CastExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<ClosureExpr> for AnyHasAttrs
impl From<ClosureExpr> for AnyHasAttrs
Source§fn from(node: ClosureExpr) -> AnyHasAttrs
fn from(node: ClosureExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Const> for AnyHasAttrs
impl From<Const> for AnyHasAttrs
Source§fn from(node: Const) -> AnyHasAttrs
fn from(node: Const) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<ConstParam> for AnyHasAttrs
impl From<ConstParam> for AnyHasAttrs
Source§fn from(node: ConstParam) -> AnyHasAttrs
fn from(node: ConstParam) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<ContinueExpr> for AnyHasAttrs
impl From<ContinueExpr> for AnyHasAttrs
Source§fn from(node: ContinueExpr) -> AnyHasAttrs
fn from(node: ContinueExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Enum> for AnyHasAttrs
impl From<Enum> for AnyHasAttrs
Source§fn from(node: Enum) -> AnyHasAttrs
fn from(node: Enum) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<ExternBlock> for AnyHasAttrs
impl From<ExternBlock> for AnyHasAttrs
Source§fn from(node: ExternBlock) -> AnyHasAttrs
fn from(node: ExternBlock) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<ExternCrate> for AnyHasAttrs
impl From<ExternCrate> for AnyHasAttrs
Source§fn from(node: ExternCrate) -> AnyHasAttrs
fn from(node: ExternCrate) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<ExternItemList> for AnyHasAttrs
impl From<ExternItemList> for AnyHasAttrs
Source§fn from(node: ExternItemList) -> AnyHasAttrs
fn from(node: ExternItemList) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<FieldExpr> for AnyHasAttrs
impl From<FieldExpr> for AnyHasAttrs
Source§fn from(node: FieldExpr) -> AnyHasAttrs
fn from(node: FieldExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Fn> for AnyHasAttrs
impl From<Fn> for AnyHasAttrs
Source§fn from(node: Fn) -> AnyHasAttrs
fn from(node: Fn) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<ForExpr> for AnyHasAttrs
impl From<ForExpr> for AnyHasAttrs
Source§fn from(node: ForExpr) -> AnyHasAttrs
fn from(node: ForExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<FormatArgsExpr> for AnyHasAttrs
impl From<FormatArgsExpr> for AnyHasAttrs
Source§fn from(node: FormatArgsExpr) -> AnyHasAttrs
fn from(node: FormatArgsExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<IdentPat> for AnyHasAttrs
impl From<IdentPat> for AnyHasAttrs
Source§fn from(node: IdentPat) -> AnyHasAttrs
fn from(node: IdentPat) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<IfExpr> for AnyHasAttrs
impl From<IfExpr> for AnyHasAttrs
Source§fn from(node: IfExpr) -> AnyHasAttrs
fn from(node: IfExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Impl> for AnyHasAttrs
impl From<Impl> for AnyHasAttrs
Source§fn from(node: Impl) -> AnyHasAttrs
fn from(node: Impl) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<IndexExpr> for AnyHasAttrs
impl From<IndexExpr> for AnyHasAttrs
Source§fn from(node: IndexExpr) -> AnyHasAttrs
fn from(node: IndexExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Item> for AnyHasAttrs
impl From<Item> for AnyHasAttrs
Source§fn from(node: Item) -> AnyHasAttrs
fn from(node: Item) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<ItemList> for AnyHasAttrs
impl From<ItemList> for AnyHasAttrs
Source§fn from(node: ItemList) -> AnyHasAttrs
fn from(node: ItemList) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<LetExpr> for AnyHasAttrs
impl From<LetExpr> for AnyHasAttrs
Source§fn from(node: LetExpr) -> AnyHasAttrs
fn from(node: LetExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<LetStmt> for AnyHasAttrs
impl From<LetStmt> for AnyHasAttrs
Source§fn from(node: LetStmt) -> AnyHasAttrs
fn from(node: LetStmt) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<LifetimeParam> for AnyHasAttrs
impl From<LifetimeParam> for AnyHasAttrs
Source§fn from(node: LifetimeParam) -> AnyHasAttrs
fn from(node: LifetimeParam) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Literal> for AnyHasAttrs
impl From<Literal> for AnyHasAttrs
Source§fn from(node: Literal) -> AnyHasAttrs
fn from(node: Literal) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<LoopExpr> for AnyHasAttrs
impl From<LoopExpr> for AnyHasAttrs
Source§fn from(node: LoopExpr) -> AnyHasAttrs
fn from(node: LoopExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<MacroCall> for AnyHasAttrs
impl From<MacroCall> for AnyHasAttrs
Source§fn from(node: MacroCall) -> AnyHasAttrs
fn from(node: MacroCall) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<MacroDef> for AnyHasAttrs
impl From<MacroDef> for AnyHasAttrs
Source§fn from(node: MacroDef) -> AnyHasAttrs
fn from(node: MacroDef) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<MacroRules> for AnyHasAttrs
impl From<MacroRules> for AnyHasAttrs
Source§fn from(node: MacroRules) -> AnyHasAttrs
fn from(node: MacroRules) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<MatchArm> for AnyHasAttrs
impl From<MatchArm> for AnyHasAttrs
Source§fn from(node: MatchArm) -> AnyHasAttrs
fn from(node: MatchArm) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<MatchArmList> for AnyHasAttrs
impl From<MatchArmList> for AnyHasAttrs
Source§fn from(node: MatchArmList) -> AnyHasAttrs
fn from(node: MatchArmList) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<MatchExpr> for AnyHasAttrs
impl From<MatchExpr> for AnyHasAttrs
Source§fn from(node: MatchExpr) -> AnyHasAttrs
fn from(node: MatchExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<MethodCallExpr> for AnyHasAttrs
impl From<MethodCallExpr> for AnyHasAttrs
Source§fn from(node: MethodCallExpr) -> AnyHasAttrs
fn from(node: MethodCallExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Module> for AnyHasAttrs
impl From<Module> for AnyHasAttrs
Source§fn from(node: Module) -> AnyHasAttrs
fn from(node: Module) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<OffsetOfExpr> for AnyHasAttrs
impl From<OffsetOfExpr> for AnyHasAttrs
Source§fn from(node: OffsetOfExpr) -> AnyHasAttrs
fn from(node: OffsetOfExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Param> for AnyHasAttrs
impl From<Param> for AnyHasAttrs
Source§fn from(node: Param) -> AnyHasAttrs
fn from(node: Param) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<ParenExpr> for AnyHasAttrs
impl From<ParenExpr> for AnyHasAttrs
Source§fn from(node: ParenExpr) -> AnyHasAttrs
fn from(node: ParenExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<PathExpr> for AnyHasAttrs
impl From<PathExpr> for AnyHasAttrs
Source§fn from(node: PathExpr) -> AnyHasAttrs
fn from(node: PathExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<PrefixExpr> for AnyHasAttrs
impl From<PrefixExpr> for AnyHasAttrs
Source§fn from(node: PrefixExpr) -> AnyHasAttrs
fn from(node: PrefixExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<RangeExpr> for AnyHasAttrs
impl From<RangeExpr> for AnyHasAttrs
Source§fn from(node: RangeExpr) -> AnyHasAttrs
fn from(node: RangeExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<RecordExprField> for AnyHasAttrs
impl From<RecordExprField> for AnyHasAttrs
Source§fn from(node: RecordExprField) -> AnyHasAttrs
fn from(node: RecordExprField) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<RecordExprFieldList> for AnyHasAttrs
impl From<RecordExprFieldList> for AnyHasAttrs
Source§fn from(node: RecordExprFieldList) -> AnyHasAttrs
fn from(node: RecordExprFieldList) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<RecordField> for AnyHasAttrs
impl From<RecordField> for AnyHasAttrs
Source§fn from(node: RecordField) -> AnyHasAttrs
fn from(node: RecordField) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<RecordPatField> for AnyHasAttrs
impl From<RecordPatField> for AnyHasAttrs
Source§fn from(node: RecordPatField) -> AnyHasAttrs
fn from(node: RecordPatField) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<RefExpr> for AnyHasAttrs
impl From<RefExpr> for AnyHasAttrs
Source§fn from(node: RefExpr) -> AnyHasAttrs
fn from(node: RefExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<RestPat> for AnyHasAttrs
impl From<RestPat> for AnyHasAttrs
Source§fn from(node: RestPat) -> AnyHasAttrs
fn from(node: RestPat) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<ReturnExpr> for AnyHasAttrs
impl From<ReturnExpr> for AnyHasAttrs
Source§fn from(node: ReturnExpr) -> AnyHasAttrs
fn from(node: ReturnExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<SelfParam> for AnyHasAttrs
impl From<SelfParam> for AnyHasAttrs
Source§fn from(node: SelfParam) -> AnyHasAttrs
fn from(node: SelfParam) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<SourceFile> for AnyHasAttrs
impl From<SourceFile> for AnyHasAttrs
Source§fn from(node: SourceFile) -> AnyHasAttrs
fn from(node: SourceFile) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Static> for AnyHasAttrs
impl From<Static> for AnyHasAttrs
Source§fn from(node: Static) -> AnyHasAttrs
fn from(node: Static) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<StmtList> for AnyHasAttrs
impl From<StmtList> for AnyHasAttrs
Source§fn from(node: StmtList) -> AnyHasAttrs
fn from(node: StmtList) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Struct> for AnyHasAttrs
impl From<Struct> for AnyHasAttrs
Source§fn from(node: Struct) -> AnyHasAttrs
fn from(node: Struct) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Trait> for AnyHasAttrs
impl From<Trait> for AnyHasAttrs
Source§fn from(node: Trait) -> AnyHasAttrs
fn from(node: Trait) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<TryExpr> for AnyHasAttrs
impl From<TryExpr> for AnyHasAttrs
Source§fn from(node: TryExpr) -> AnyHasAttrs
fn from(node: TryExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<TupleExpr> for AnyHasAttrs
impl From<TupleExpr> for AnyHasAttrs
Source§fn from(node: TupleExpr) -> AnyHasAttrs
fn from(node: TupleExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<TupleField> for AnyHasAttrs
impl From<TupleField> for AnyHasAttrs
Source§fn from(node: TupleField) -> AnyHasAttrs
fn from(node: TupleField) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<TypeAlias> for AnyHasAttrs
impl From<TypeAlias> for AnyHasAttrs
Source§fn from(node: TypeAlias) -> AnyHasAttrs
fn from(node: TypeAlias) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<TypeParam> for AnyHasAttrs
impl From<TypeParam> for AnyHasAttrs
Source§fn from(node: TypeParam) -> AnyHasAttrs
fn from(node: TypeParam) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<UnderscoreExpr> for AnyHasAttrs
impl From<UnderscoreExpr> for AnyHasAttrs
Source§fn from(node: UnderscoreExpr) -> AnyHasAttrs
fn from(node: UnderscoreExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Union> for AnyHasAttrs
impl From<Union> for AnyHasAttrs
Source§fn from(node: Union) -> AnyHasAttrs
fn from(node: Union) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Use> for AnyHasAttrs
impl From<Use> for AnyHasAttrs
Source§fn from(node: Use) -> AnyHasAttrs
fn from(node: Use) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<Variant> for AnyHasAttrs
impl From<Variant> for AnyHasAttrs
Source§fn from(node: Variant) -> AnyHasAttrs
fn from(node: Variant) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<WhileExpr> for AnyHasAttrs
impl From<WhileExpr> for AnyHasAttrs
Source§fn from(node: WhileExpr) -> AnyHasAttrs
fn from(node: WhileExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<YeetExpr> for AnyHasAttrs
impl From<YeetExpr> for AnyHasAttrs
Source§fn from(node: YeetExpr) -> AnyHasAttrs
fn from(node: YeetExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl From<YieldExpr> for AnyHasAttrs
impl From<YieldExpr> for AnyHasAttrs
Source§fn from(node: YieldExpr) -> AnyHasAttrs
fn from(node: YieldExpr) -> AnyHasAttrs
Converts to this type from the input type.
Source§impl HasAttrs for AnyHasAttrs
impl HasAttrs for AnyHasAttrs
fn attrs(&self) -> AstChildren<Attr> ⓘ
Source§fn inner_attributes_node(&self) -> Option<SyntaxNode<RustLanguage>>
fn inner_attributes_node(&self) -> Option<SyntaxNode<RustLanguage>>
This may return the same node as called with (with
SourceFile). The caller has the responsibility
to avoid duplicate attributes.Source§impl Hash for AnyHasAttrs
impl Hash for AnyHasAttrs
Source§impl PartialEq for AnyHasAttrs
impl PartialEq for AnyHasAttrs
Source§fn eq(&self, other: &AnyHasAttrs) -> bool
fn eq(&self, other: &AnyHasAttrs) -> bool
Tests for
self and other values to be equal, and is used by ==.Auto Trait Implementations§
impl !RefUnwindSafe for AnyHasAttrs
impl !Send for AnyHasAttrs
impl !Sync for AnyHasAttrs
impl !UnwindSafe for AnyHasAttrs
impl Freeze for AnyHasAttrs
impl Unpin for AnyHasAttrs
impl UnsafeUnpin for AnyHasAttrs
Blanket Implementations§
Source§impl<N> AstNodeEdit for N
impl<N> AstNodeEdit for N
fn indent_level(&self) -> IndentLevel
fn indent(&self, level: IndentLevel) -> Self
fn indent_with_mapping(&self, level: IndentLevel, make: &SyntaxFactory) -> Self
fn dedent(&self, level: IndentLevel) -> Self
fn reset_indent(&self) -> Self
Source§impl<T> AttrsOwnerEdit for Twhere
T: HasAttrs,
impl<T> AttrsOwnerEdit for Twhere
T: HasAttrs,
fn remove_attrs_and_docs(&self, editor: &SyntaxEditor)
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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