[][src]Struct c2rust_refactor::transform::linkage::CanonicalizeStructs

pub struct CanonicalizeStructs;

canonicalize_structs Command

Usage: canonicalize_structs

Marks: target

For each type definition marked target, delete all other type definitions with the same name, and replace their uses with uses of the target type.

This only works when all the identically-named types have the same definition, such as when all are generated from #includes of the same C header.

Example:

mod a {
    pub struct Foo { ... }  // Foo: target
}

mod b {
    struct Foo { ... }  // same as ::a::Foo

    unsafe fn use_foo(x: &Foo) { ... }
}

After running canonicalize_structs:

mod a {
    pub struct Foo { ... }
}

mod b {
    // 1. `struct Foo` has been deleted
    // 2. `use_foo` now references `::a::Foo` directly
    unsafe fn use_foo(x: &::a::Foo) { ... }
}

Note that this transform does not check or adjust item visibility. If the target type is not visible throughout the crate, this may introduce compile errors.

Trait Implementations

impl Transform for CanonicalizeStructs[src]

Auto Trait Implementations

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]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<E> SpecializationError for E[src]

impl<T> Erased for T[src]

impl<T> Send for T where
    T: ?Sized
[src]

impl<T> Sync for T where
    T: ?Sized
[src]

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]

impl<T> Erased for T

impl<T> Make for T[src]

impl<T> Slottable for T[src]