Skip to content

Add literal macro#114

Open
andrepd wants to merge 2 commits intotomprogrammer:masterfrom
andrepd:literal
Open

Add literal macro#114
andrepd wants to merge 2 commits intotomprogrammer:masterfrom
andrepd:literal

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