impls_lifetime_free_weak

Function impls_lifetime_free_weak 

Source
pub fn impls_lifetime_free_weak<T>() -> bool
where T: ?Sized,
Available on crate features alloc and unreliable only.
Expand description

Returns true if the given type implements LifetimeFree.

Use define_impls_trait_ignore_lt_fn macro to generate other trait implementation check functions.

Library tests ensure that the impls_trait checks are performed at compile time and fully optimized with no runtime cost at opt-level >= 1. Note that the release profile uses opt-level = 3 by default.

ยงReliability

While it is unlikely, there is still a possibility that this function may return false negatives in future Rust versions.

The correctness of the results returned by the functions depends on the following:

  • Documented behavior that if T implements Eq, two Rcs that point to the same allocation are always equal: https://doc.rust-lang.org/1.82.0/std/rc/struct.Rc.html#method.eq.
  • Undocumented behavior that the Rc::partial_eq implementation for T: Eq will not use PartialEq::eq if both Rcs point to the same memory location.
  • The assumption that the undocumented short-circuit behavior described above will be retained for optimization purposes.

There is no formal guarantee that the undocumented behavior described above will be retained. If the implementation changes in a future Rust version, the function may return a false negative, that is, it may return false, even though T implements the trait. However, the implementation guarantees that a false positive result is impossible, i.e., the function will never return true if T does not implement the trait in any future Rust version.

Details: