The best solution would be to just use HashMap<String, usize>. If you need to get the rest of the Ingredient, you could use HashMap<String, (Ingredient, usize)>. Otherwise, if it has to have this shape, you can provide a custom hash and equality test via the raw entry API.
I can provide a custom hash and equality test for this struct. But I can only provide one test on the struct, how can I provide different test for two HashMap on the same struct?
The raw_entry allows you to provide the hash/eq test at key lookup time rather than as a type argument. It's nightly-only, but the hashbrown crate allows you to use it on stable. (The hashbrown crate is actually the implementor for the std hashmap.)
Then you can create a HashMap<IngredientName, usize> as well as a HashMap<IngredientAlias, usize>, and .get() accepts a str (so you can do .get("some ingredient name")).