gccrs: Use canonical path for Clone trait within derive
gccrs: Fixes Clone trait path in derive macro to work with core library.
This patch corrects how the Clone trait is referenced within the derive macro implementation in gccrs. Previously, using a local path for Clone caused issues when compiling against the core library, breaking tests that emulated core functionality. The change ensures that the canonical path to Clone is used, resolving these compilation errors and improving compatibility.
In Details
The DeriveClone::clone_call function in gccrs was incorrectly using a local path to refer to the Clone trait. This prevented derive macros from correctly identifying and using the standard Clone trait, especially when the compiler was configured to use the core library or an emulation of it. This commit switches to using the canonical path for Clone, ensuring that derive macros function correctly regardless of the specific module structure or core library version.
- derive macro
- In Rust, a procedural macro that automatically generates implementations for traits like
Clone,Debug, orCopybased on the structure of a struct or enum. It allows developers to avoid writing repetitive boilerplate code. - Clone trait
- A fundamental Rust trait that enables creating a deep copy of a value. Types implementing
Clonecan be duplicated using the.clone()method. It's crucial for many standard library features and data structures. - core library
- A minimal subset of the Rust standard library that is available on all Rust targets, including those without operating system support (e.g., embedded systems). It provides essential types and traits but omits features like I/O or threading.
- canonical path
- The fully qualified, unambiguous path to an item (like a trait or function) within a Rust program, starting from the crate root. This ensures that the compiler always refers to the correct item, regardless of the current scope.