[−][src]Struct c2rust_refactor::transform::generics::GeneralizeItems
generalize_items
Command
Usage: generalize_items VAR [TY]
Marks: target
Replace marked types with generic type parameters.
Specifically: add a new type parameter called VAR
to each item marked
target
, replacing type annotations inside that item that are marked target
with uses of the type parameter. Also update all uses of target
items,
passing TY
as the new type argument when used inside a non-target
item, and
passing the type variable VAR
when used inside a target
item.
If TY
is not provided, it defaults to a copy of the first type annotation
that was replaced with VAR
.
Example:
struct Foo { // Foo: target x: i32, // i32: target y: i32, } fn f(foo: Foo) { ... } // f: target fn main() { f(...); }
After running generalize_items T
:
// 1. Foo gains a new type parameter `T` struct Foo<T> { // 2. Marked type annotations become `T` x: T, y: i32, } // 3. `f` gains a new type parameter `T`, and passes // it through to uses of `Foo` fn f<T>(foo: Foo<T>) { ... } struct Bar<T> { foo: Foo<T>, } fn main() { // 4. Uses outside target items use `i32`, the // first type that was replaced with `T`. f::<i32>(...); }
Trait Implementations
impl Transform for GeneralizeItems
[src]
fn transform(&self, krate: &mut Crate, st: &CommandState, cx: &RefactorCtxt)
[src]
fn min_phase(&self) -> Phase
[src]
Return the minimum phase at which this transform can operate. See the Phase
docs for details. The default is Phase2
. Read more
Auto Trait Implementations
impl !Send for GeneralizeItems
impl !Sync for GeneralizeItems
Blanket Implementations
impl<T> Lone for T
[src]
impl<T> From for T
[src]
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<E> SpecializationError for E
[src]
default fn not_found<S, T>(
trait_name: &'static str,
method_name: &'static str
) -> E where
T: ?Sized,
[src]
trait_name: &'static str,
method_name: &'static str
) -> E where
T: ?Sized,
impl<T> Erased for T
[src]
impl<T> Send for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Sync for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Same for T
type Output = T
Should always be Self
impl<T> MaybeResult for T
[src]
impl<'a, T> Captures for T where
T: ?Sized,
[src]
T: ?Sized,