Open Pspritechologist opened 2 weeks ago
This would be cool to have but I don't think it is a simple fix 🤔. You will have to use const MARK: &'static str = "?"
for now.
Some issues:
char
in a const
context to a byte slice (&[u8]
). Static strings can be trivially converted using .as_bytes()
, but char
is a bit more complex. It seems like you can do it like this, which does not work in a const
context yet. 🤯 not sure if there is a better way?
const c: char = '?';
let mut buf = [0u8; 4];
c.encode_utf8(&mut buf);
let as_bytes = &buf.as_slice()[..c.len_utf8()];
- The macro needs to be able to handle both types of values. Usually the way to do this is with a trait, but again this has to be done in a `const` context and `const` trait methods are not yet supported in Rust.
Although the
concat!
macro seems to work fine on char literals (concat!('h', 'e', 'l', 'l', 'o')
), it won't seem to accept a const char. Example:provides the error:
no method named 'as_bytes' found for type 'char' in the current scope
.Is there any chance to solve this?