Send is a rust Kind, the other things you mentioned are Traits. While both can be used to bound generics, they are in fact quite different. You have to opt-in to a Trait, but what Kinds a type has are inferred based on their contents - besides changing the contents you can't change the Kind of a type.
For most Kinds, the rule is "a type X is of Kind Y if all the members of X are of Kind Y."
In this case, since being Send requires that you fulfill 'static
, which means that they don't contain any non-'static
references. Since ProcessOptions
contains a non-static lifetime Option<&'a Path>
, like Chris Morgan detailed in his comment, ProcessOptions
does not fulfill Send.