Char in std::ascii - Rust (original) (raw)
#[repr(u8)]
pub enum Char {
Show 128 variants Null = 0,
StartOfHeading = 1,
StartOfText = 2,
EndOfText = 3,
EndOfTransmission = 4,
Enquiry = 5,
Acknowledge = 6,
Bell = 7,
Backspace = 8,
CharacterTabulation = 9,
LineFeed = 10,
LineTabulation = 11,
FormFeed = 12,
CarriageReturn = 13,
ShiftOut = 14,
ShiftIn = 15,
DataLinkEscape = 16,
DeviceControlOne = 17,
DeviceControlTwo = 18,
DeviceControlThree = 19,
DeviceControlFour = 20,
NegativeAcknowledge = 21,
SynchronousIdle = 22,
EndOfTransmissionBlock = 23,
Cancel = 24,
EndOfMedium = 25,
Substitute = 26,
Escape = 27,
InformationSeparatorFour = 28,
InformationSeparatorThree = 29,
InformationSeparatorTwo = 30,
InformationSeparatorOne = 31,
Space = 32,
ExclamationMark = 33,
QuotationMark = 34,
NumberSign = 35,
DollarSign = 36,
PercentSign = 37,
Ampersand = 38,
Apostrophe = 39,
LeftParenthesis = 40,
RightParenthesis = 41,
Asterisk = 42,
PlusSign = 43,
Comma = 44,
HyphenMinus = 45,
FullStop = 46,
Solidus = 47,
Digit0 = 48,
Digit1 = 49,
Digit2 = 50,
Digit3 = 51,
Digit4 = 52,
Digit5 = 53,
Digit6 = 54,
Digit7 = 55,
Digit8 = 56,
Digit9 = 57,
Colon = 58,
Semicolon = 59,
LessThanSign = 60,
EqualsSign = 61,
GreaterThanSign = 62,
QuestionMark = 63,
CommercialAt = 64,
CapitalA = 65,
CapitalB = 66,
CapitalC = 67,
CapitalD = 68,
CapitalE = 69,
CapitalF = 70,
CapitalG = 71,
CapitalH = 72,
CapitalI = 73,
CapitalJ = 74,
CapitalK = 75,
CapitalL = 76,
CapitalM = 77,
CapitalN = 78,
CapitalO = 79,
CapitalP = 80,
CapitalQ = 81,
CapitalR = 82,
CapitalS = 83,
CapitalT = 84,
CapitalU = 85,
CapitalV = 86,
CapitalW = 87,
CapitalX = 88,
CapitalY = 89,
CapitalZ = 90,
LeftSquareBracket = 91,
ReverseSolidus = 92,
RightSquareBracket = 93,
CircumflexAccent = 94,
LowLine = 95,
GraveAccent = 96,
SmallA = 97,
SmallB = 98,
SmallC = 99,
SmallD = 100,
SmallE = 101,
SmallF = 102,
SmallG = 103,
SmallH = 104,
SmallI = 105,
SmallJ = 106,
SmallK = 107,
SmallL = 108,
SmallM = 109,
SmallN = 110,
SmallO = 111,
SmallP = 112,
SmallQ = 113,
SmallR = 114,
SmallS = 115,
SmallT = 116,
SmallU = 117,
SmallV = 118,
SmallW = 119,
SmallX = 120,
SmallY = 121,
SmallZ = 122,
LeftCurlyBracket = 123,
VerticalLine = 124,
RightCurlyBracket = 125,
Tilde = 126,
Delete = 127,
}
🔬This is a nightly-only experimental API. (ascii_char
#110998)
Expand description
One of the 128 Unicode characters from U+0000 through U+007F, often known as the ASCII subset.
Officially, this is the first block in Unicode, Basic Latin. For details, see the C0 Controls and Basic Latin code chart.
This block was based on older 7-bit character code standards such as ANSI X3.4-1977, ISO 646-1973, and NIST FIPS 1-2.
§When to use this
The main advantage of this subset is that it’s always valid UTF-8. As such, the &[ascii::Char]
-> &str
conversion function (as well as other related ones) are O(1): no runtime checks are needed.
If you’re consuming strings, you should usually handle Unicode and thus accept str
s, not limit yourself to ascii::Char
s.
However, certain formats are intentionally designed to produce ASCII-only output in order to be 8-bit-clean. In those cases, it can be simpler and faster to generate ascii::Char
s instead of dealing with the variable width properties of general UTF-8 encoded strings, while still allowing the result to be used freely with other Rust things that deal in general str
s.
For example, a UUID library might offer a way to produce the string representation of a UUID as an [ascii::Char; 36]
to avoid memory allocation yet still allow it to be used as UTF-8 via as_str
without paying for validation (or needing unsafe
code) the way it would if it were provided as a [u8; 36]
.
§Layout
This type is guaranteed to have a size and alignment of 1 byte.
§Names
The variants on this type are Unicode names of the characters in upper camel case, with a few tweaks:
- For
<control>
characters, the primary alias name is used. LATIN
is dropped, as this block has no non-latin letters.LETTER
is dropped, asCAPITAL
/SMALL
suffices in this block.DIGIT
s use a single digit rather than writing outZERO
,ONE
, etc.
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0000 (The default variant)
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0001
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0002
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0003
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0004
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0005
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0006
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0007
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0008
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0009
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+000A
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+000B
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+000C
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+000D
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+000E
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+000F
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0010
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0011
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0012
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0013
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0014
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0015
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0016
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0017
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0018
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0019
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+001A
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+001B
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+001C
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+001D
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+001E
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+001F
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0020
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0021
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0022
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0023
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0024
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0025
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0026
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0027
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0028
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0029
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+002A
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+002B
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+002C
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+002D
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+002E
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+002F
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0030
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0031
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0032
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0033
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0034
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0035
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0036
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0037
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0038
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0039
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+003A
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+003B
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+003C
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+003D
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+003E
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+003F
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0040
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0041
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0042
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0043
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0044
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0045
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0046
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0047
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0048
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0049
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+004A
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+004B
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+004C
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+004D
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+004E
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+004F
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0050
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0051
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0052
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0053
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0054
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0055
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0056
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0057
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0058
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0059
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+005A
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+005B
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+005C
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+005D
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+005E
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+005F
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0060
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0061
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0062
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0063
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0064
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0065
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0066
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0067
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0068
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0069
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+006A
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+006B
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+006C
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+006D
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+006E
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+006F
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0070
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0071
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0072
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0073
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0074
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0075
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0076
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0077
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0078
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+0079
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+007A
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+007B
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+007C
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+007D
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+007E
🔬This is a nightly-only experimental API. (ascii_char_variants
#110998)
U+007F
🔬This is a nightly-only experimental API. (ascii_char
#110998)
Creates an ascii character from the byte b
, or returns None
if it’s too large.
🔬This is a nightly-only experimental API. (ascii_char
#110998)
Creates an ASCII character from the byte b
, without checking whether it’s valid.
§Safety
b
must be in 0..=127
, or else this is UB.
🔬This is a nightly-only experimental API. (ascii_char
#110998)
When passed the number 0
, 1
, …, 9
, returns the character '0'
, '1'
, …, '9'
respectively.
If d >= 10
, returns None
.
🔬This is a nightly-only experimental API. (ascii_char
#110998)
When passed the number 0
, 1
, …, 9
, returns the character '0'
, '1'
, …, '9'
respectively, without checking that it’s in-range.
§Safety
This is immediate UB if called with d > 64
.
If d >= 10
and d <= 64
, this is allowed to return any value or panic. Notably, it should not be expected to return hex digits, or any other reasonable extension of the decimal digits.
(This loose safety condition is intended to simplify soundness proofs when writing code using this method, since the implementation doesn’t need something really specific, not to make those other arguments do something useful. It might be tightened before stabilization.)
🔬This is a nightly-only experimental API. (ascii_char
#110998)
Gets this ASCII character as a byte.
🔬This is a nightly-only experimental API. (ascii_char
#110998)
Gets this ASCII character as a char
Unicode Scalar Value.
🔬This is a nightly-only experimental API. (ascii_char
#110998)
Views this ASCII character as a one-code-unit UTF-8 str
.
Returns the default value of Null
Extends a collection with the contents of an iterator. Read more
🔬This is a nightly-only experimental API. (extend_one
#72631)
Extends a collection with exactly one element.
🔬This is a nightly-only experimental API. (extend_one
#72631)
Reserves capacity in a collection for the given number of additional elements. Read more
Extends a collection with the contents of an iterator. Read more
🔬This is a nightly-only experimental API. (extend_one
#72631)
Extends a collection with exactly one element.
🔬This is a nightly-only experimental API. (extend_one
#72631)
Reserves capacity in a collection for the given number of additional elements. Read more
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
Tests for self
and other
values to be equal, and is used by ==
.
Tests for !=
. The default implementation is almost always sufficient, and should not be overridden without very good reason.
This method returns an ordering between self
and other
values if one exists. Read more
Tests less than (for self
and other
) and is used by the <
operator. Read more
Tests less than or equal to (for self
and other
) and is used by the<=
operator. Read more
Tests greater than (for self
and other
) and is used by the >
operator. Read more
Tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
🔬This is a nightly-only experimental API. (step_trait
#42168)
Returns the bounds on the number of successor steps required to get from start
to end
like Iterator::size_hint(). Read more
🔬This is a nightly-only experimental API. (step_trait
#42168)
Returns the value that would be obtained by taking the _successor_of self
count
times. Read more
🔬This is a nightly-only experimental API. (step_trait
#42168)
Returns the value that would be obtained by taking the _predecessor_of self
count
times. Read more
🔬This is a nightly-only experimental API. (step_trait
#42168)
Returns the value that would be obtained by taking the _successor_of self
count
times. Read more
🔬This is a nightly-only experimental API. (step_trait
#42168)
Returns the value that would be obtained by taking the _predecessor_of self
count
times. Read more
🔬This is a nightly-only experimental API. (step_trait
#42168)
Returns the value that would be obtained by taking the _successor_of self
count
times. Read more
🔬This is a nightly-only experimental API. (step_trait
#42168)
Returns the value that would be obtained by taking the _predecessor_of self
count
times. Read more