Given that the only difference looks to be in the HashMap → Vec conversion, I'd have the function return the HashMap directly, then have the conversion be a separate step.
return HashMap<&T, usize> will not help since for code where I use this result, I will still need to convert to Vec<(&T, usize)>, or other place Vec<(T, usize)>.
Is the suffix _cloned an acceptable convention in rust? Since there are functions get, get_mut etc.
Or should I define an Occurance trait for these two types?
That avoids duplicating code while still giving you both variants. I'd also use copied rather than cloned since you're depending on Copy, not Clone. And yes, having suffixed variations of functions is entirely reasonable.
As an alternative, you could also just have the one that returns a HashMap, then write an extension trait with, for example, into_vec and into_vec_copied_key methods.
Another alternative would be to have occurance return an opaque type that contains the HashMap, then give that type the methods (rather than being on a trait). That way, these conversion methods only exist specifically for the result of occurance, rather than for all coincidentally similar HashMaps.
But yes, having two functions with appropriate names is fine.