From googling so far, this still doesn't work: reason: Cargo wants features to be ADDITIVE.
This means if:
feature=gpu defines one pub fn foo
feature=cpu defines another pub fn foo
then this ends up being a conflict (I'm running into this problem right now.)
=====
It appears that when a crate is imported many times with different features, Rust just loads the crate once, with the UNION of all the features. Thus, it's really requiring that the features be 'additive'.
This is all from trial+error / googling , so I don't have an official reference I can cite.