diff --git a/accursed-unutterable-type-id-derive/src/lib.rs b/accursed-unutterable-type-id-derive/src/lib.rs index 4562b7d..53fd4ab 100644 --- a/accursed-unutterable-type-id-derive/src/lib.rs +++ b/accursed-unutterable-type-id-derive/src/lib.rs @@ -49,11 +49,9 @@ pub fn my_macro(input: TokenStream) -> TokenStream { let name = input.ident; let generics1 = input.generics.params.iter().map(|p| match p { GenericParam::Type(ty) => { - if ty.bounds.is_empty() { - quote!(#ty: 'static) - } else { - quote!(#ty + 'static) - } + let name = &ty.ident; + let bounds = ty.bounds.iter(); + quote!(#name: #(#bounds +)* 'static) } other => other.to_token_stream(), }); diff --git a/src/lib.rs b/src/lib.rs index 656fc44..bf0fd6e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -85,7 +85,7 @@ impl InternalAccursedUnutterableTypeId { #[cfg(not(debug_assertions))] impl InternalAccursedUnutterableTypeId { - pub fn new(n: u64) -> Self { + pub fn __internal_new(n: u64) -> Self { Self(n) } fn inner(self) -> u64 { @@ -136,6 +136,18 @@ mod __doctest { /// ``` mod complex {} + /// ``` + /// use accursed_unutterable_type_id::AccursedUnutterablyTypeIdentified; + /// + /// trait Sussy {} + /// + /// #[derive(AccursedUnutterablyTypeIdentified)] + /// struct Uwu { + /// _x: [T; N], + /// } + /// ``` + mod type_bounds {} + /// ``` /// use accursed_unutterable_type_id::AccursedUnutterablyTypeIdentified; ///