Mojo fully supports arbitrary library designed types, check out the note books for examples that define custom matrix operations of various types.
Edit: I see you're going to have protocols/ traits. Can those be specializes/monomoprhized at function call time like Julia abstract types?
And how about function specialization? Will functions be attached to structs in a single dispatch fashion or free floating multimethods?