rossmacarthur / constcat

🐱concat! with support for const variables and expressions
Apache License 2.0
35 stars 2 forks source link

Const Char #5

Open Pspritechologist opened 2 weeks ago

Pspritechologist commented 2 weeks ago

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?

rossmacarthur commented 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:

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.