rustify icon indicating copy to clipboard operation
rustify copied to clipboard

Future incompatibility with Rust RFC 3373: Avoid non-local definitions in functions

Open Urgau opened this issue 1 year ago • 0 comments

Rust RFC 3373: Avoid non-local definitions in functions was accepted and it's implementation at https://github.com/rust-lang/rust/pull/120393 found that this crate would be affected by it.

To be more precise users of this crate would be affected by it, in the form of a warn-by-default lint: non_local_definitions. This is because the derive macros from this crate use impl in a local context, const _DERIVE_Endpoint_FOR_???:

https://github.com/jmgilman/rustify/blob/68fdbdb848b012f1116b972900dca23cde260e0e/rustify_derive/src/lib.rs#L305-L308

Fortunately I believe a simple fix exist for this crate, by using a const-anon instead of named one (since const-anon are specialized to be "transparent" to their parent):

-    let const_name = format!("_DERIVE_Endpoint_FOR_{}", id);
-    let const_ident = Ident::new(const_name.as_str(), Span::call_site());
     quote! {
-        const #const_ident: () = {
+        const _: () = {

I would suggest applying some form of the patch above as well as releasing a patch version of this crate, as to have a fix available for users before or just after the PR is merged.

cc @jmgilman

Urgau avatar Feb 04 '24 15:02 Urgau