Enum aws_sdk_gamelift::types::Ec2InstanceType
source · #[non_exhaustive]pub enum Ec2InstanceType {
Show 176 variants
C32xlarge,
C34xlarge,
C38xlarge,
C3Large,
C3Xlarge,
C42xlarge,
C44xlarge,
C48xlarge,
C4Large,
C4Xlarge,
C512xlarge,
C518xlarge,
C524xlarge,
C52xlarge,
C54xlarge,
C59xlarge,
C5Large,
C5Xlarge,
C5a12xlarge,
C5a16xlarge,
C5a24xlarge,
C5a2xlarge,
C5a4xlarge,
C5a8xlarge,
C5aLarge,
C5aXlarge,
C5d12xlarge,
C5d18xlarge,
C5d24xlarge,
C5d2xlarge,
C5d4xlarge,
C5d9xlarge,
C5dLarge,
C5dXlarge,
C6a12xlarge,
C6a16xlarge,
C6a24xlarge,
C6a2xlarge,
C6a4xlarge,
C6a8xlarge,
C6aLarge,
C6aXlarge,
C6g12xlarge,
C6g16xlarge,
C6g2xlarge,
C6g4xlarge,
C6g8xlarge,
C6gLarge,
C6gMedium,
C6gXlarge,
C6gn12xlarge,
C6gn16xlarge,
C6gn2xlarge,
C6gn4xlarge,
C6gn8xlarge,
C6gnLarge,
C6gnMedium,
C6gnXlarge,
C6i12xlarge,
C6i16xlarge,
C6i24xlarge,
C6i2xlarge,
C6i4xlarge,
C6i8xlarge,
C6iLarge,
C6iXlarge,
C7g12xlarge,
C7g16xlarge,
C7g2xlarge,
C7g4xlarge,
C7g8xlarge,
C7gLarge,
C7gMedium,
C7gXlarge,
G5g16xlarge,
G5g2xlarge,
G5g4xlarge,
G5g8xlarge,
G5gXlarge,
M32xlarge,
M3Large,
M3Medium,
M3Xlarge,
M410xlarge,
M42xlarge,
M44xlarge,
M4Large,
M4Xlarge,
M512xlarge,
M516xlarge,
M524xlarge,
M52xlarge,
M54xlarge,
M58xlarge,
M5Large,
M5Xlarge,
M5a12xlarge,
M5a16xlarge,
M5a24xlarge,
M5a2xlarge,
M5a4xlarge,
M5a8xlarge,
M5aLarge,
M5aXlarge,
M6g12xlarge,
M6g16xlarge,
M6g2xlarge,
M6g4xlarge,
M6g8xlarge,
M6gLarge,
M6gMedium,
M6gXlarge,
M7g12xlarge,
M7g16xlarge,
M7g2xlarge,
M7g4xlarge,
M7g8xlarge,
M7gLarge,
M7gMedium,
M7gXlarge,
R32xlarge,
R34xlarge,
R38xlarge,
R3Large,
R3Xlarge,
R416xlarge,
R42xlarge,
R44xlarge,
R48xlarge,
R4Large,
R4Xlarge,
R512xlarge,
R516xlarge,
R524xlarge,
R52xlarge,
R54xlarge,
R58xlarge,
R5Large,
R5Xlarge,
R5a12xlarge,
R5a16xlarge,
R5a24xlarge,
R5a2xlarge,
R5a4xlarge,
R5a8xlarge,
R5aLarge,
R5aXlarge,
R5d12xlarge,
R5d16xlarge,
R5d24xlarge,
R5d2xlarge,
R5d4xlarge,
R5d8xlarge,
R5dLarge,
R5dXlarge,
R6g12xlarge,
R6g16xlarge,
R6g2xlarge,
R6g4xlarge,
R6g8xlarge,
R6gLarge,
R6gMedium,
R6gXlarge,
R7g12xlarge,
R7g16xlarge,
R7g2xlarge,
R7g4xlarge,
R7g8xlarge,
R7gLarge,
R7gMedium,
R7gXlarge,
T2Large,
T2Medium,
T2Micro,
T2Small,
Unknown(UnknownVariantValue),
}
Expand description
When writing a match expression against Ec2InstanceType
, it is important to ensure
your code is forward-compatible. That is, if a match arm handles a case for a
feature that is supported by the service but has not been represented as an enum
variant in a current version of SDK, your code should continue to work when you
upgrade SDK to a future version in which the enum does include a variant for that
feature.
Here is an example of how you can make a match expression forward-compatible:
# let ec2instancetype = unimplemented!();
match ec2instancetype {
Ec2InstanceType::C32xlarge => { /* ... */ },
Ec2InstanceType::C34xlarge => { /* ... */ },
Ec2InstanceType::C38xlarge => { /* ... */ },
Ec2InstanceType::C3Large => { /* ... */ },
Ec2InstanceType::C3Xlarge => { /* ... */ },
Ec2InstanceType::C42xlarge => { /* ... */ },
Ec2InstanceType::C44xlarge => { /* ... */ },
Ec2InstanceType::C48xlarge => { /* ... */ },
Ec2InstanceType::C4Large => { /* ... */ },
Ec2InstanceType::C4Xlarge => { /* ... */ },
Ec2InstanceType::C512xlarge => { /* ... */ },
Ec2InstanceType::C518xlarge => { /* ... */ },
Ec2InstanceType::C524xlarge => { /* ... */ },
Ec2InstanceType::C52xlarge => { /* ... */ },
Ec2InstanceType::C54xlarge => { /* ... */ },
Ec2InstanceType::C59xlarge => { /* ... */ },
Ec2InstanceType::C5Large => { /* ... */ },
Ec2InstanceType::C5Xlarge => { /* ... */ },
Ec2InstanceType::C5a12xlarge => { /* ... */ },
Ec2InstanceType::C5a16xlarge => { /* ... */ },
Ec2InstanceType::C5a24xlarge => { /* ... */ },
Ec2InstanceType::C5a2xlarge => { /* ... */ },
Ec2InstanceType::C5a4xlarge => { /* ... */ },
Ec2InstanceType::C5a8xlarge => { /* ... */ },
Ec2InstanceType::C5aLarge => { /* ... */ },
Ec2InstanceType::C5aXlarge => { /* ... */ },
Ec2InstanceType::C5d12xlarge => { /* ... */ },
Ec2InstanceType::C5d18xlarge => { /* ... */ },
Ec2InstanceType::C5d24xlarge => { /* ... */ },
Ec2InstanceType::C5d2xlarge => { /* ... */ },
Ec2InstanceType::C5d4xlarge => { /* ... */ },
Ec2InstanceType::C5d9xlarge => { /* ... */ },
Ec2InstanceType::C5dLarge => { /* ... */ },
Ec2InstanceType::C5dXlarge => { /* ... */ },
Ec2InstanceType::C6a12xlarge => { /* ... */ },
Ec2InstanceType::C6a16xlarge => { /* ... */ },
Ec2InstanceType::C6a24xlarge => { /* ... */ },
Ec2InstanceType::C6a2xlarge => { /* ... */ },
Ec2InstanceType::C6a4xlarge => { /* ... */ },
Ec2InstanceType::C6a8xlarge => { /* ... */ },
Ec2InstanceType::C6aLarge => { /* ... */ },
Ec2InstanceType::C6aXlarge => { /* ... */ },
Ec2InstanceType::C6g12xlarge => { /* ... */ },
Ec2InstanceType::C6g16xlarge => { /* ... */ },
Ec2InstanceType::C6g2xlarge => { /* ... */ },
Ec2InstanceType::C6g4xlarge => { /* ... */ },
Ec2InstanceType::C6g8xlarge => { /* ... */ },
Ec2InstanceType::C6gLarge => { /* ... */ },
Ec2InstanceType::C6gMedium => { /* ... */ },
Ec2InstanceType::C6gXlarge => { /* ... */ },
Ec2InstanceType::C6gn12xlarge => { /* ... */ },
Ec2InstanceType::C6gn16xlarge => { /* ... */ },
Ec2InstanceType::C6gn2xlarge => { /* ... */ },
Ec2InstanceType::C6gn4xlarge => { /* ... */ },
Ec2InstanceType::C6gn8xlarge => { /* ... */ },
Ec2InstanceType::C6gnLarge => { /* ... */ },
Ec2InstanceType::C6gnMedium => { /* ... */ },
Ec2InstanceType::C6gnXlarge => { /* ... */ },
Ec2InstanceType::C6i12xlarge => { /* ... */ },
Ec2InstanceType::C6i16xlarge => { /* ... */ },
Ec2InstanceType::C6i24xlarge => { /* ... */ },
Ec2InstanceType::C6i2xlarge => { /* ... */ },
Ec2InstanceType::C6i4xlarge => { /* ... */ },
Ec2InstanceType::C6i8xlarge => { /* ... */ },
Ec2InstanceType::C6iLarge => { /* ... */ },
Ec2InstanceType::C6iXlarge => { /* ... */ },
Ec2InstanceType::C7g12xlarge => { /* ... */ },
Ec2InstanceType::C7g16xlarge => { /* ... */ },
Ec2InstanceType::C7g2xlarge => { /* ... */ },
Ec2InstanceType::C7g4xlarge => { /* ... */ },
Ec2InstanceType::C7g8xlarge => { /* ... */ },
Ec2InstanceType::C7gLarge => { /* ... */ },
Ec2InstanceType::C7gMedium => { /* ... */ },
Ec2InstanceType::C7gXlarge => { /* ... */ },
Ec2InstanceType::G5g16xlarge => { /* ... */ },
Ec2InstanceType::G5g2xlarge => { /* ... */ },
Ec2InstanceType::G5g4xlarge => { /* ... */ },
Ec2InstanceType::G5g8xlarge => { /* ... */ },
Ec2InstanceType::G5gXlarge => { /* ... */ },
Ec2InstanceType::M32xlarge => { /* ... */ },
Ec2InstanceType::M3Large => { /* ... */ },
Ec2InstanceType::M3Medium => { /* ... */ },
Ec2InstanceType::M3Xlarge => { /* ... */ },
Ec2InstanceType::M410xlarge => { /* ... */ },
Ec2InstanceType::M42xlarge => { /* ... */ },
Ec2InstanceType::M44xlarge => { /* ... */ },
Ec2InstanceType::M4Large => { /* ... */ },
Ec2InstanceType::M4Xlarge => { /* ... */ },
Ec2InstanceType::M512xlarge => { /* ... */ },
Ec2InstanceType::M516xlarge => { /* ... */ },
Ec2InstanceType::M524xlarge => { /* ... */ },
Ec2InstanceType::M52xlarge => { /* ... */ },
Ec2InstanceType::M54xlarge => { /* ... */ },
Ec2InstanceType::M58xlarge => { /* ... */ },
Ec2InstanceType::M5Large => { /* ... */ },
Ec2InstanceType::M5Xlarge => { /* ... */ },
Ec2InstanceType::M5a12xlarge => { /* ... */ },
Ec2InstanceType::M5a16xlarge => { /* ... */ },
Ec2InstanceType::M5a24xlarge => { /* ... */ },
Ec2InstanceType::M5a2xlarge => { /* ... */ },
Ec2InstanceType::M5a4xlarge => { /* ... */ },
Ec2InstanceType::M5a8xlarge => { /* ... */ },
Ec2InstanceType::M5aLarge => { /* ... */ },
Ec2InstanceType::M5aXlarge => { /* ... */ },
Ec2InstanceType::M6g12xlarge => { /* ... */ },
Ec2InstanceType::M6g16xlarge => { /* ... */ },
Ec2InstanceType::M6g2xlarge => { /* ... */ },
Ec2InstanceType::M6g4xlarge => { /* ... */ },
Ec2InstanceType::M6g8xlarge => { /* ... */ },
Ec2InstanceType::M6gLarge => { /* ... */ },
Ec2InstanceType::M6gMedium => { /* ... */ },
Ec2InstanceType::M6gXlarge => { /* ... */ },
Ec2InstanceType::M7g12xlarge => { /* ... */ },
Ec2InstanceType::M7g16xlarge => { /* ... */ },
Ec2InstanceType::M7g2xlarge => { /* ... */ },
Ec2InstanceType::M7g4xlarge => { /* ... */ },
Ec2InstanceType::M7g8xlarge => { /* ... */ },
Ec2InstanceType::M7gLarge => { /* ... */ },
Ec2InstanceType::M7gMedium => { /* ... */ },
Ec2InstanceType::M7gXlarge => { /* ... */ },
Ec2InstanceType::R32xlarge => { /* ... */ },
Ec2InstanceType::R34xlarge => { /* ... */ },
Ec2InstanceType::R38xlarge => { /* ... */ },
Ec2InstanceType::R3Large => { /* ... */ },
Ec2InstanceType::R3Xlarge => { /* ... */ },
Ec2InstanceType::R416xlarge => { /* ... */ },
Ec2InstanceType::R42xlarge => { /* ... */ },
Ec2InstanceType::R44xlarge => { /* ... */ },
Ec2InstanceType::R48xlarge => { /* ... */ },
Ec2InstanceType::R4Large => { /* ... */ },
Ec2InstanceType::R4Xlarge => { /* ... */ },
Ec2InstanceType::R512xlarge => { /* ... */ },
Ec2InstanceType::R516xlarge => { /* ... */ },
Ec2InstanceType::R524xlarge => { /* ... */ },
Ec2InstanceType::R52xlarge => { /* ... */ },
Ec2InstanceType::R54xlarge => { /* ... */ },
Ec2InstanceType::R58xlarge => { /* ... */ },
Ec2InstanceType::R5Large => { /* ... */ },
Ec2InstanceType::R5Xlarge => { /* ... */ },
Ec2InstanceType::R5a12xlarge => { /* ... */ },
Ec2InstanceType::R5a16xlarge => { /* ... */ },
Ec2InstanceType::R5a24xlarge => { /* ... */ },
Ec2InstanceType::R5a2xlarge => { /* ... */ },
Ec2InstanceType::R5a4xlarge => { /* ... */ },
Ec2InstanceType::R5a8xlarge => { /* ... */ },
Ec2InstanceType::R5aLarge => { /* ... */ },
Ec2InstanceType::R5aXlarge => { /* ... */ },
Ec2InstanceType::R5d12xlarge => { /* ... */ },
Ec2InstanceType::R5d16xlarge => { /* ... */ },
Ec2InstanceType::R5d24xlarge => { /* ... */ },
Ec2InstanceType::R5d2xlarge => { /* ... */ },
Ec2InstanceType::R5d4xlarge => { /* ... */ },
Ec2InstanceType::R5d8xlarge => { /* ... */ },
Ec2InstanceType::R5dLarge => { /* ... */ },
Ec2InstanceType::R5dXlarge => { /* ... */ },
Ec2InstanceType::R6g12xlarge => { /* ... */ },
Ec2InstanceType::R6g16xlarge => { /* ... */ },
Ec2InstanceType::R6g2xlarge => { /* ... */ },
Ec2InstanceType::R6g4xlarge => { /* ... */ },
Ec2InstanceType::R6g8xlarge => { /* ... */ },
Ec2InstanceType::R6gLarge => { /* ... */ },
Ec2InstanceType::R6gMedium => { /* ... */ },
Ec2InstanceType::R6gXlarge => { /* ... */ },
Ec2InstanceType::R7g12xlarge => { /* ... */ },
Ec2InstanceType::R7g16xlarge => { /* ... */ },
Ec2InstanceType::R7g2xlarge => { /* ... */ },
Ec2InstanceType::R7g4xlarge => { /* ... */ },
Ec2InstanceType::R7g8xlarge => { /* ... */ },
Ec2InstanceType::R7gLarge => { /* ... */ },
Ec2InstanceType::R7gMedium => { /* ... */ },
Ec2InstanceType::R7gXlarge => { /* ... */ },
Ec2InstanceType::T2Large => { /* ... */ },
Ec2InstanceType::T2Medium => { /* ... */ },
Ec2InstanceType::T2Micro => { /* ... */ },
Ec2InstanceType::T2Small => { /* ... */ },
other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
_ => { /* ... */ },
}
The above code demonstrates that when ec2instancetype
represents
NewFeature
, the execution path will lead to the second last match arm,
even though the enum does not contain a variant Ec2InstanceType::NewFeature
in the current version of SDK. The reason is that the variable other
,
created by the @
operator, is bound to
Ec2InstanceType::Unknown(UnknownVariantValue("NewFeature".to_owned()))
and calling as_str
on it yields "NewFeature"
.
This match expression is forward-compatible when executed with a newer
version of SDK where the variant Ec2InstanceType::NewFeature
is defined.
Specifically, when ec2instancetype
represents NewFeature
,
the execution path will hit the second last match arm as before by virtue of
calling as_str
on Ec2InstanceType::NewFeature
also yielding "NewFeature"
.
Explicitly matching on the Unknown
variant should
be avoided for two reasons:
- The inner data
UnknownVariantValue
is opaque, and no further information can be extracted. - It might inadvertently shadow other intended match arms.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
C32xlarge
C34xlarge
C38xlarge
C3Large
C3Xlarge
C42xlarge
C44xlarge
C48xlarge
C4Large
C4Xlarge
C512xlarge
C518xlarge
C524xlarge
C52xlarge
C54xlarge
C59xlarge
C5Large
C5Xlarge
C5a12xlarge
C5a16xlarge
C5a24xlarge
C5a2xlarge
C5a4xlarge
C5a8xlarge
C5aLarge
C5aXlarge
C5d12xlarge
C5d18xlarge
C5d24xlarge
C5d2xlarge
C5d4xlarge
C5d9xlarge
C5dLarge
C5dXlarge
C6a12xlarge
C6a16xlarge
C6a24xlarge
C6a2xlarge
C6a4xlarge
C6a8xlarge
C6aLarge
C6aXlarge
C6g12xlarge
C6g16xlarge
C6g2xlarge
C6g4xlarge
C6g8xlarge
C6gLarge
C6gMedium
C6gXlarge
C6gn12xlarge
C6gn16xlarge
C6gn2xlarge
C6gn4xlarge
C6gn8xlarge
C6gnLarge
C6gnMedium
C6gnXlarge
C6i12xlarge
C6i16xlarge
C6i24xlarge
C6i2xlarge
C6i4xlarge
C6i8xlarge
C6iLarge
C6iXlarge
C7g12xlarge
C7g16xlarge
C7g2xlarge
C7g4xlarge
C7g8xlarge
C7gLarge
C7gMedium
C7gXlarge
G5g16xlarge
G5g2xlarge
G5g4xlarge
G5g8xlarge
G5gXlarge
M32xlarge
M3Large
M3Medium
M3Xlarge
M410xlarge
M42xlarge
M44xlarge
M4Large
M4Xlarge
M512xlarge
M516xlarge
M524xlarge
M52xlarge
M54xlarge
M58xlarge
M5Large
M5Xlarge
M5a12xlarge
M5a16xlarge
M5a24xlarge
M5a2xlarge
M5a4xlarge
M5a8xlarge
M5aLarge
M5aXlarge
M6g12xlarge
M6g16xlarge
M6g2xlarge
M6g4xlarge
M6g8xlarge
M6gLarge
M6gMedium
M6gXlarge
M7g12xlarge
M7g16xlarge
M7g2xlarge
M7g4xlarge
M7g8xlarge
M7gLarge
M7gMedium
M7gXlarge
R32xlarge
R34xlarge
R38xlarge
R3Large
R3Xlarge
R416xlarge
R42xlarge
R44xlarge
R48xlarge
R4Large
R4Xlarge
R512xlarge
R516xlarge
R524xlarge
R52xlarge
R54xlarge
R58xlarge
R5Large
R5Xlarge
R5a12xlarge
R5a16xlarge
R5a24xlarge
R5a2xlarge
R5a4xlarge
R5a8xlarge
R5aLarge
R5aXlarge
R5d12xlarge
R5d16xlarge
R5d24xlarge
R5d2xlarge
R5d4xlarge
R5d8xlarge
R5dLarge
R5dXlarge
R6g12xlarge
R6g16xlarge
R6g2xlarge
R6g4xlarge
R6g8xlarge
R6gLarge
R6gMedium
R6gXlarge
R7g12xlarge
R7g16xlarge
R7g2xlarge
R7g4xlarge
R7g8xlarge
R7gLarge
R7gMedium
R7gXlarge
T2Large
T2Medium
T2Micro
T2Small
Unknown(UnknownVariantValue)
Unknown
. See the docs on this enum for the correct way to handle unknown variants.Unknown
contains new variants that have been added since this code was generated.
Implementations§
source§impl Ec2InstanceType
impl Ec2InstanceType
sourcepub fn try_parse(value: &str) -> Result<Self, UnknownVariantError>
pub fn try_parse(value: &str) -> Result<Self, UnknownVariantError>
Parses the enum value while disallowing unknown variants.
Unknown variants will result in an error.
Trait Implementations§
source§impl AsRef<str> for Ec2InstanceType
impl AsRef<str> for Ec2InstanceType
source§impl Clone for Ec2InstanceType
impl Clone for Ec2InstanceType
source§fn clone(&self) -> Ec2InstanceType
fn clone(&self) -> Ec2InstanceType
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for Ec2InstanceType
impl Debug for Ec2InstanceType
source§impl Display for Ec2InstanceType
impl Display for Ec2InstanceType
source§impl From<&str> for Ec2InstanceType
impl From<&str> for Ec2InstanceType
source§impl FromStr for Ec2InstanceType
impl FromStr for Ec2InstanceType
source§impl Hash for Ec2InstanceType
impl Hash for Ec2InstanceType
source§impl Ord for Ec2InstanceType
impl Ord for Ec2InstanceType
source§fn cmp(&self, other: &Ec2InstanceType) -> Ordering
fn cmp(&self, other: &Ec2InstanceType) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for Ec2InstanceType
impl PartialEq for Ec2InstanceType
source§fn eq(&self, other: &Ec2InstanceType) -> bool
fn eq(&self, other: &Ec2InstanceType) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for Ec2InstanceType
impl PartialOrd for Ec2InstanceType
source§fn partial_cmp(&self, other: &Ec2InstanceType) -> Option<Ordering>
fn partial_cmp(&self, other: &Ec2InstanceType) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moreimpl Eq for Ec2InstanceType
impl StructuralPartialEq for Ec2InstanceType
Auto Trait Implementations§
impl Freeze for Ec2InstanceType
impl RefUnwindSafe for Ec2InstanceType
impl Send for Ec2InstanceType
impl Sync for Ec2InstanceType
impl Unpin for Ec2InstanceType
impl UnwindSafe for Ec2InstanceType
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
source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.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>
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>
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