Skip to content

Conversation

@andrepd
Copy link

@andrepd andrepd commented Nov 17, 2025

This macro enables us to write literal, compile-time, fixed-size ascii strings by writing

const HELLO: &[AsciiChar; 15] = ascii::literal!("Hello in ASCII!");

just as we would write literal, compile-time, fixed-size byte strings by writing

const HELLO: &[u8; 15] = b"Hello in bytes!";

This seems to be currently the only way to (safely) write a string such that its validity is checked at compile-time.

…r; N]

To make it more convenient to work with fixed-size ascii arrays
(`[AsciiChar; N]`), add the following trait impls:

- Just as there is an impl of `From` in the direction `[AsciiChar] →
  AsciiStr`, add also `[AsciiChar; N] → AsciiStr`.

- Just as there is an impl of `AsRef` in the direction `[AsciiChar] →
  AsciiStr`, add also `[AsciiChar; N] → AsciiStr`.
`literal!("An ascii string")` enables us to write a fixed-size,
compile-time ascii string in the same manner as we would use `b"A byte
string"` to write a fixed-size, compile-time byte string.

This is the only way to (safely) have a const ascii string.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant