ItemEntity id should be dedicated datatype
Currently the ItemEntity is still a String. It would probably be safer and more performant to use a wrapper for a unsigned integer type.
Perhaps something like this, which would also allow to construct the id back into a Q, L, or P-ID.
struct EntityId {
id: u64,
item_type: EntityType,
}