tree 6569ae1846fd26044c529e77bcafe33583d74c9b
parent 57e0bfadabb1cc649a7920890ae5bfb44ffc1756
author Devin Jeanpierre <jeanpierreda@google.com> 1657183767 -0700
committer Copybara-Service <copybara-worker@google.com> 1657183798 -0700

Convert RsTypeKind to a cheaply-clonable type with `Rc` inside.

The immediate reason for this is to allow it to be returned by a Salsa query.
Either the query returns an `RsTypeKind` by value, in which case it should be cheaply clonable,
or it returns an `Rc<RsTypeKind>`, in which case the recursive data structure should use `Rc`
inside to avoid excessive copying. No matter how we design the query, `RsTypeKind` becomes as so.

However, in fact I've wanted this change for a long time before that, and I think it's
good even on its own merits.

Suppose I want to format `x` as a pointer. The current way to do it is something like
`quote!{*const #x}`. But this is "lossy" -- this isn't a structured datatype that says "a pointer to `x`",
it's just a code snippet. But if `x` were cheaply clonable, we could simply do
`RsTypeKind::Pointer {pointee: Rc::new(x.clone()), mutability: Mutability::Const}`.
And so rather than building up token streams in stringly-typed code, we can build up `RsTypeKind` objects.

This does occur in practice, e.g. `format_mut_ref_as_uninitialized` formats a `RsTypeKind` as a
`MaybeUninit`, returning a `TokenStream`. But after this change, it could instead be implemented to return
a new `RsTypeKind`, containing a reference to the old one, and preserving structure -- at least, if
we wanted to. I'm not sure where else this occurs, though, which is part of why I hadn't actually
proposed this change until now, where it becomes desirable for Salsa.

PiperOrigin-RevId: 459454675
