macro_rules! assert_capability_catalog_unique {
($({
field: $field:ident,
name: $name:literal $(,)?
}),* $(,)?) => {
mod __capability_catalog_unique_fields {
$(
/// 生成期占位模块:重复 field 标识符时在此触发 E0428。
/// 使用 `mod`(snake_case 合法)而非 unit struct,避免 #[allow(non_camel_case_types)]。
pub mod $field {}
)*
}
const fn __catalog_str_eq(a: &str, b: &str) -> bool {
if a.len() != b.len() {
return false;
}
let ab = a.as_bytes();
let bb = b.as_bytes();
let mut i = 0;
while i < ab.len() {
if ab[i] != bb[i] {
return false;
}
i += 1;
}
true
}
const _: () = {
$(
assert!(
__catalog_str_eq(::core::stringify!($field), $name),
"capability catalog: name must equal field identifier text"
);
)*
};
};
}