#[repr(u8)]pub enum Char {
Show 128 variants
Null,
StartOfHeading,
StartOfText,
EndOfText,
EndOfTransmission,
Enquiry,
Acknowledge,
Bell,
Backspace,
CharacterTabulation,
LineFeed,
LineTabulation,
FormFeed,
CarriageReturn,
ShiftOut,
ShiftIn,
DataLinkEscape,
DeviceControlOne,
DeviceControlTwo,
DeviceControlThree,
DeviceControlFour,
NegativeAcknowledge,
SynchronousIdle,
EndOfTransmissionBlock,
Cancel,
EndOfMedium,
Substitute,
Escape,
InformationSeparatorFour,
InformationSeparatorThree,
InformationSeparatorTwo,
InformationSeparatorOne,
Space,
ExclamationMark,
QuotationMark,
NumberSign,
DollarSign,
PercentSign,
Ampersand,
Apostrophe,
LeftParenthesis,
RightParenthesis,
Asterisk,
PlusSign,
Comma,
HyphenMinus,
FullStop,
Solidus,
Digit0,
Digit1,
Digit2,
Digit3,
Digit4,
Digit5,
Digit6,
Digit7,
Digit8,
Digit9,
Colon,
Semicolon,
LessThanSign,
EqualsSign,
GreaterThanSign,
QuestionMark,
CommercialAt,
CapitalA,
CapitalB,
CapitalC,
CapitalD,
CapitalE,
CapitalF,
CapitalG,
CapitalH,
CapitalI,
CapitalJ,
CapitalK,
CapitalL,
CapitalM,
CapitalN,
CapitalO,
CapitalP,
CapitalQ,
CapitalR,
CapitalS,
CapitalT,
CapitalU,
CapitalV,
CapitalW,
CapitalX,
CapitalY,
CapitalZ,
LeftSquareBracket,
ReverseSolidus,
RightSquareBracket,
CircumflexAccent,
LowLine,
GraveAccent,
SmallA,
SmallB,
SmallC,
SmallD,
SmallE,
SmallF,
SmallG,
SmallH,
SmallI,
SmallJ,
SmallK,
SmallL,
SmallM,
SmallN,
SmallO,
SmallP,
SmallQ,
SmallR,
SmallS,
SmallT,
SmallU,
SmallV,
SmallW,
SmallX,
SmallY,
SmallZ,
LeftCurlyBracket,
VerticalLine,
RightCurlyBracket,
Tilde,
Delete,
}
ascii_char
#110998)Expand description
从 U+0000 到 U+007F 的 128 个 Unicode 字符之一,通常称为 ASCII 子集。
正式地,这是 Unicode Basic Latin 中的第一个 block。 详见 C0 Controls and Basic Latin 代码表。
此块基于较旧的 7 位字符代码标准,例如 ANSI X3.4-1977、ISO 646-1973 和 NIST FIPS 1-2。
什么时候使用这个
这个子集的主要优点是它总是有效的 UTF-8。
因此,&[ascii::Char]
-> &str
转换函数 (以及其他相关函数) 是 O(1): 不需要运行时检查。
如果您正在使用字符串,您通常应该处理 Unicode 并因此接受 str,而不是将自己限制为 ascii::Char。
但是,某些格式被有意设计为仅生成 ASCII 输出,以便 8 位干净。
在这些情况下,生成 ascii::Char 而不是处理一般 UTF-8 编码字符串的可变宽度属性会更简单、更快,同时仍然允许结果与其他 Rust 事物自由使用,这些事物通常处理 str
s。
例如,UUID 库可能会提供一种方法来将 UUID 的字符串表示形式生成为 [ascii::Char; 36]
,以避免内存分配,但仍允许它通过 as_str
用作 UTF-8,而无需像以前那样支付验证费用 (或需要 unsafe
代码) 如果它作为 [u8; 36]
提供。
Layout
此类型保证具有 1 个字节的大小和对齐方式。
Names
这种类型的变体是大驼峰字母 Unicode names,有一些调整:
- 对于
<control>
字符,使用主别名。 LATIN
是丢弃,因为这个块没有非拉丁字母。LETTER
是抛弃,因为CAPITAL
/SMALL
在这个块中就足够了。DIGIT
使用单个数字而不是写出ZERO
、ONE
等。
Variants§
Null
ascii_char_variants
#110998)U+0000
StartOfHeading
ascii_char_variants
#110998)U+0001
StartOfText
ascii_char_variants
#110998)U+0002
EndOfText
ascii_char_variants
#110998)U+0003
EndOfTransmission
ascii_char_variants
#110998)U+0004
Enquiry
ascii_char_variants
#110998)U+0005
Acknowledge
ascii_char_variants
#110998)U+0006
Bell
ascii_char_variants
#110998)U+0007
Backspace
ascii_char_variants
#110998)U+0008
CharacterTabulation
ascii_char_variants
#110998)U+0009
LineFeed
ascii_char_variants
#110998)U+000A
LineTabulation
ascii_char_variants
#110998)U+000B
FormFeed
ascii_char_variants
#110998)U+000C
CarriageReturn
ascii_char_variants
#110998)U+000D
ShiftOut
ascii_char_variants
#110998)U+000E
ShiftIn
ascii_char_variants
#110998)U+000F
DataLinkEscape
ascii_char_variants
#110998)U+0010
DeviceControlOne
ascii_char_variants
#110998)U+0011
DeviceControlTwo
ascii_char_variants
#110998)U+0012
DeviceControlThree
ascii_char_variants
#110998)U+0013
DeviceControlFour
ascii_char_variants
#110998)U+0014
NegativeAcknowledge
ascii_char_variants
#110998)U+0015
SynchronousIdle
ascii_char_variants
#110998)U+0016
EndOfTransmissionBlock
ascii_char_variants
#110998)U+0017
Cancel
ascii_char_variants
#110998)U+0018
EndOfMedium
ascii_char_variants
#110998)U+0019
Substitute
ascii_char_variants
#110998)U+001A
Escape
ascii_char_variants
#110998)U+001B
InformationSeparatorFour
ascii_char_variants
#110998)U+001C
InformationSeparatorThree
ascii_char_variants
#110998)U+001D
InformationSeparatorTwo
ascii_char_variants
#110998)U+001E
InformationSeparatorOne
ascii_char_variants
#110998)U+001F
Space
ascii_char_variants
#110998)U+0020
ExclamationMark
ascii_char_variants
#110998)U+0021
QuotationMark
ascii_char_variants
#110998)U+0022
NumberSign
ascii_char_variants
#110998)U+0023
DollarSign
ascii_char_variants
#110998)U+0024
PercentSign
ascii_char_variants
#110998)U+0025
Ampersand
ascii_char_variants
#110998)U+0026
Apostrophe
ascii_char_variants
#110998)U+0027
LeftParenthesis
ascii_char_variants
#110998)U+0028
RightParenthesis
ascii_char_variants
#110998)U+0029
Asterisk
ascii_char_variants
#110998)U+002A
PlusSign
ascii_char_variants
#110998)U+002B
Comma
ascii_char_variants
#110998)U+002C
HyphenMinus
ascii_char_variants
#110998)U+002D
FullStop
ascii_char_variants
#110998)U+002E
Solidus
ascii_char_variants
#110998)U+002F
Digit0
ascii_char_variants
#110998)U+0030
Digit1
ascii_char_variants
#110998)U+0031
Digit2
ascii_char_variants
#110998)U+0032
Digit3
ascii_char_variants
#110998)U+0033
Digit4
ascii_char_variants
#110998)U+0034
Digit5
ascii_char_variants
#110998)U+0035
Digit6
ascii_char_variants
#110998)U+0036
Digit7
ascii_char_variants
#110998)U+0037
Digit8
ascii_char_variants
#110998)U+0038
Digit9
ascii_char_variants
#110998)U+0039
Colon
ascii_char_variants
#110998)U+003A
Semicolon
ascii_char_variants
#110998)U+003B
LessThanSign
ascii_char_variants
#110998)U+003C
EqualsSign
ascii_char_variants
#110998)U+003D
GreaterThanSign
ascii_char_variants
#110998)U+003E
QuestionMark
ascii_char_variants
#110998)U+003F
CommercialAt
ascii_char_variants
#110998)U+0040
CapitalA
ascii_char_variants
#110998)U+0041
CapitalB
ascii_char_variants
#110998)U+0042
CapitalC
ascii_char_variants
#110998)U+0043
CapitalD
ascii_char_variants
#110998)U+0044
CapitalE
ascii_char_variants
#110998)U+0045
CapitalF
ascii_char_variants
#110998)U+0046
CapitalG
ascii_char_variants
#110998)U+0047
CapitalH
ascii_char_variants
#110998)U+0048
CapitalI
ascii_char_variants
#110998)U+0049
CapitalJ
ascii_char_variants
#110998)U+004A
CapitalK
ascii_char_variants
#110998)U+004B
CapitalL
ascii_char_variants
#110998)U+004C
CapitalM
ascii_char_variants
#110998)U+004D
CapitalN
ascii_char_variants
#110998)U+004E
CapitalO
ascii_char_variants
#110998)U+004F
CapitalP
ascii_char_variants
#110998)U+0050
CapitalQ
ascii_char_variants
#110998)U+0051
CapitalR
ascii_char_variants
#110998)U+0052
CapitalS
ascii_char_variants
#110998)U+0053
CapitalT
ascii_char_variants
#110998)U+0054
CapitalU
ascii_char_variants
#110998)U+0055
CapitalV
ascii_char_variants
#110998)U+0056
CapitalW
ascii_char_variants
#110998)U+0057
CapitalX
ascii_char_variants
#110998)U+0058
CapitalY
ascii_char_variants
#110998)U+0059
CapitalZ
ascii_char_variants
#110998)U+005A
LeftSquareBracket
ascii_char_variants
#110998)U+005B
ReverseSolidus
ascii_char_variants
#110998)U+005C
RightSquareBracket
ascii_char_variants
#110998)U+005D
CircumflexAccent
ascii_char_variants
#110998)U+005E
LowLine
ascii_char_variants
#110998)U+005F
GraveAccent
ascii_char_variants
#110998)U+0060
SmallA
ascii_char_variants
#110998)U+0061
SmallB
ascii_char_variants
#110998)U+0062
SmallC
ascii_char_variants
#110998)U+0063
SmallD
ascii_char_variants
#110998)U+0064
SmallE
ascii_char_variants
#110998)U+0065
SmallF
ascii_char_variants
#110998)U+0066
SmallG
ascii_char_variants
#110998)U+0067
SmallH
ascii_char_variants
#110998)U+0068
SmallI
ascii_char_variants
#110998)U+0069
SmallJ
ascii_char_variants
#110998)U+006A
SmallK
ascii_char_variants
#110998)U+006B
SmallL
ascii_char_variants
#110998)U+006C
SmallM
ascii_char_variants
#110998)U+006D
SmallN
ascii_char_variants
#110998)U+006E
SmallO
ascii_char_variants
#110998)U+006F
SmallP
ascii_char_variants
#110998)U+0070
SmallQ
ascii_char_variants
#110998)U+0071
SmallR
ascii_char_variants
#110998)U+0072
SmallS
ascii_char_variants
#110998)U+0073
SmallT
ascii_char_variants
#110998)U+0074
SmallU
ascii_char_variants
#110998)U+0075
SmallV
ascii_char_variants
#110998)U+0076
SmallW
ascii_char_variants
#110998)U+0077
SmallX
ascii_char_variants
#110998)U+0078
SmallY
ascii_char_variants
#110998)U+0079
SmallZ
ascii_char_variants
#110998)U+007A
LeftCurlyBracket
ascii_char_variants
#110998)U+007B
VerticalLine
ascii_char_variants
#110998)U+007C
RightCurlyBracket
ascii_char_variants
#110998)U+007D
Tilde
ascii_char_variants
#110998)U+007E
Delete
ascii_char_variants
#110998)U+007F
Implementations§
source§impl AsciiChar
impl AsciiChar
sourcepub const fn from_u8(b: u8) -> Option<Self>
🔬This is a nightly-only experimental API. (ascii_char
#110998)
pub const fn from_u8(b: u8) -> Option<Self>
ascii_char
#110998)从字节 b
创建一个 ascii 字符,如果它太大则返回 None
。
sourcepub const unsafe fn from_u8_unchecked(b: u8) -> Self
🔬This is a nightly-only experimental API. (ascii_char
#110998)
pub const unsafe fn from_u8_unchecked(b: u8) -> Self
ascii_char
#110998)sourcepub const fn digit(d: u8) -> Option<Self>
🔬This is a nightly-only experimental API. (ascii_char
#110998)
pub const fn digit(d: u8) -> Option<Self>
ascii_char
#110998)当传递number 0
, 1
,…, 9
时,分别返回character '0'
, '1'
,…, '9'
。
如果是 d >= 10
,则返回 None
。
sourcepub const unsafe fn digit_unchecked(d: u8) -> Self
🔬This is a nightly-only experimental API. (ascii_char
#110998)
pub const unsafe fn digit_unchecked(d: u8) -> Self
ascii_char
#110998)当传递number 0
、1
、…、9
时,分别返回character '0'
、'1'
、…、'9'
,而不检查它是否在范围内。
Safety
如果用 d > 64
调用,这是 immediate UB。
如果 d >= 10
和 d <= 64
,则允许返回任何值或出现错误。
值得注意的是,不应期望返回十六进制数字或十进制数字的任何其他合理扩展。
(这种失去安全条件的目的是在使用这种方法编写代码时简化可靠性证明,因为实现不需要真正具体的东西,而不是让其他参数做一些有用的事情。 它可能会在稳定之前收紧。)
sourcepub const fn as_u8(self) -> u8
🔬This is a nightly-only experimental API. (ascii_char
#110998)
pub const fn as_u8(self) -> u8
ascii_char
#110998)获取此 ASCII 字符作为一个字节。