Yes, we could bifurcate the grammar of `as`; perhaps it could just take a
`PATH` or a parenthesized type.

On Thursday, May 22, 2014, Kevin Ballard <notifications@github.com> wrote:
> In active/0000-trait-bounds-with-plus.md:
>
>> +
>> + trait X {
>> + fn f(Trait: Share);
>> + }
>> +
>> +See Rust issue #12778 for details.
>> +
>> +Also, since kinds are now just built-in traits, it makes sense to treat
a bounded trait object as just a combination of traits. This could be
extended in the future to allow objects consisting of arbitrary trait
combinations.
>> +
>> +# Detailed design
>> +
>> +Instead of `:` in trait bounds for first-class traits (e.g.
`&Trait:Share + Send`), we use `+` (e.g. `&Trait + Share + Send`).
>> +
>> +# Drawbacks
>> +
>> +It may be that `+` is ugly. Also, it messes with the precedence of
`as`. (See Rust PR #14365 for the fallout of the latter.)
>
> Could we define as as taking a subset of traits that simply excludes Foo
+ Bar? You can then use x as (Foo + Bar) if you need that.
>
> —
> Reply to this email directly or view it on GitHub.<
https://ci3.googleusercontent.com/proxy/dXOhGuUX-_kyDOSH1i7O3lO5VH-nwu_uM4tG-SnIioxnPW-pF-JyUAdCgLFy88JIAMsQbFy2M2iIPELXhle3r9T1aQDSSiLFdSEkvIv1z5a4pSGH4ZOAolYxBpHqNARW4WNQQqrfAuTbRCUUF6HU8-jRNM7MsKFFELVvYSIgQYsDir_unOfVRwXcbdbs8IDP0kwNfBs5N9MbBB1cVqSZ80bAgku1BY6ymk7szyHdW8kqq_duBk5AsPZoU26-UkrPF1vs70eALYpiuMLVQpNlhaGbdYby=s0-d-e1-ft#https://github.com/notifications/beacon/157897__eyJzY29wZSI6Ik5ld3NpZXM6QmVhY29uIiwiZXhwaXJlcyI6MTcxNjQyNDc4NCwiZGF0YSI6eyJpZCI6MzI5MDc4ODR9fQ==--19edfc61057195ee80c47da132c0466a60343c89.gif
>