Skip to content

Tracking Issue for ascii::Char (ACP 179) #110998

@scottmcm

Description

@scottmcm

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]>; } // alloc::String impl FromIterator<core::ascii::Char> for String { ... } impl<'a> FromIterator<&'a core::ascii::Char> for String { ... } impl<'a> FromIterator<core::ascii::Char> for Cow<'a, str> {

Steps / History

Unresolved Questions

  • What should it be named? Code mixing char and Char 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, just as u32 for it.
  • Some of the as_ascii methods take &self for consistency with is_ascii. Should they take self instead where possible, as the usually-better option, or stick with &self for the consistency?

Footnotes

  1. https://std-dev-guide.rust-lang.org/feature-lifecycle/stabilization.html

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-UnicodeArea: UnicodeC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCT-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions