다음 매크로가 있습니다. StringContent
은 열거 형 항목입니다. 내가 지금은 제가 해봤 그래서다음 from_str 매크로를 from_json으로 어떻게 변경합니까?
from_json!({
"appName": "Demo App",
"appVersion": "1.0",
"database": {
"host": "dev.database.com",
"port": 3000
}
})
처럼 r#""#
을 제거 할 수 있습니다 다른 매크로 from_json!
을 원하는
from_str!(r#"{
"appName": "Demo App",
"appVersion": "1.0",
"database": {
"host": "dev.database.com",
"port": 3000
}
}"#)
과 같은 코드를 작성할 수 있습니다
#[macro_export]
macro_rules! from_str {
($json:expr) => {
StringContent(String::from($json))
}
}
작동하지 않는 다음의 것
#[macro_export]
macro_rules! from_json {
($t:tt) => {
StringContent(String::from(concat!(r#"r#""#, stringify!($t), r#"""# , r#"#"#)))
}
}
from_json
을 작동 시키려면 어떻게해야합니까?
AFAIK, 연결을 사용할 수 없습니다! 'r'및 '#'문자로 시작하는 문자열을 생성하므로 원하는 방식으로 실제로는 이스케이프 처리하지 않습니다. 또한 포함 시키십시오! 실제 파일을 포함 할 것이고, 당신이 여기에서하고 싶은 것과는 분명 다릅니다. 왜 그 매크로를 사용 했습니까? 이스케이프 처리 된 텍스트가있는 파일을 만든 다음 다시 파싱 할 계획이 있습니까? –
@JanNilsFerner 그 통찰력을 가져 주셔서 감사합니다. 나는 내 대답을 편집하여 include를 제거했습니다! 및 향상된 concat! 사용법 조금. 그래도 여전히 작동하지 않습니다. – Harindaka
그것은 물건을 깨끗이합니다. 귀하의 접근 방식은 불행히도 여전히 작동하지 않습니다, 이유에 대한 자세한 내용은 내 대답을 참조하십시오. –