Thanks for this crate!
However, recently I found one point to improve in this crate. As generated impls are using bool instead of ::core::primitive::bool to reference the primitive bool type, there will be a compile error if there is another bool type in scope.
See the example below:
use std::marker::PhantomData;
use derive_where::derive_where;
#[allow(non_camel_case_types)]
struct bool;
#[derive_where(Clone, Hash, PartialEq, Eq)]
struct A<T> {
a: usize,
b: PhantomData<T>,
}