Open
Description
Feature gate: #![feature(ascii_char)]
#![feature(ascii_char_variants)]
This is a tracking issue for the ascii::Char
type from rust-lang/libs-team#179
https://doc.rust-lang.org/nightly/std/ascii/enum.Char.html
Public API
// core::ascii
#[repr(u8)]
enum Char {
Null = 0,
…
Tilde = 127,
}
impl Debug for Char { �� }
impl Display for Char { … }
impl Default for Char { ... }
impl Step for Char { ... } // so `Range<Char>` is an Iterator
impl Char {
const fn from_u8(x: u8) -> Option<Self>;
const unsafe fn from_u8_unchecked(x: u8) -> Self;
const fn digit(d: u8) -> Option<Self>;
const unsafe fn digit_unchecked(d: u8) -> Self;
const fn as_u8(self) -> u8;
const fn as_char(self) -> char;
const fn as_str(&self) -> &str;
}
impl [Char] {
const fn as_str(&self) -> &str;
const fn as_bytes(&self) -> &[u8];
}
impl From<Char> for u8 { … }
impl From<Char> for char { … }
impl From<&[Char]> for &str { … }
// core::array
impl<const N: usize> [u8; N] {
const fn as_ascii(&self) -> Option<&[ascii::Char; N]>;
const unsafe fn as_ascii_unchecked(&self) -> &[ascii::Char; N];
}
// core::char
impl char {
const fn as_ascii(&self) -> Option<ascii::Char>;
}
// core::num
impl u8 {
const fn as_ascii(&self) -> Option<ascii::Char>;
}
// core::slice
impl [u8] {
const fn as_ascii(&self) -> Option<&[ascii::Char]>;
const unsafe fn as_ascii_unchecked(&self) -> &[ascii::Char];
}
// core::str
impl str {
const fn as_ascii(&self) -> Option<&[ascii::Char]>;
}
Steps / History
- Implementation:
- Final comment period (FCP)1
- Stabilization PR
Unresolved Questions
- What should it be named? Code mixing
char
andChar
might be too confusing. - How should its
Debug
impl work? - Is allowing
as
-casting from it a good or bad feature?- FWIW, there's no
char::to_u32
, justas u32
for it.
- FWIW, there's no
- Some of the
as_ascii
methods take&self
for consistency withis_ascii
. Should they takeself
instead where possible, as the usually-better option, or stick with&self
for the consistency?