constcat
constcat copied to clipboard
Const Char
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:
use constcat::concat;
const MARK: char = '?';
const QUESTION: &'static str = concat!("Why doesn't this work", MARK);
provides the error: no method named 'as_bytes' found for type 'char' in the current scope.
Is there any chance to solve this?
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:
- We would need to convert a
charin aconstcontext to a byte slice (&[u8]). Static strings can be trivially converted using.as_bytes(), butcharis a bit more complex. It seems like you can do it like this, which does not work in aconstcontext yet. 🤯 not sure if there is a better way? Edit: it seems likeencode_utf8supports const in Rust 1.83!
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
constcontext andconsttrait methods are not yet supported in Rust.