[−][src]Struct c2rust_refactor::transform::linkage::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 #include
s 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]
fn transform(&self, krate: &mut Crate, st: &CommandState, cx: &RefactorCtxt)
[src]
fn min_phase(&self) -> Phase
[src]
Auto Trait Implementations
impl Send for CanonicalizeStructs
impl Sync for CanonicalizeStructs
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,