[−][src]Struct c2rust_refactor::transform::format::ConvertFormatArgs
convert_format_args Command
Usage: convert_format_args
Marks: target
For each function call, if one of its argument expressions is marked target,
then parse that argument as a printf format string, with the subsequent arguments as the
format args. Replace both the format string and the args with an invocation of the Rust
format_args! macro.
This transformation applies casts to the remaining arguments to account for differences in
argument conversion behavior between C-style and Rust-style string formatting. However, it
does not attempt to convert the format_args! output into something compatible with the
original C function. This results in a type error, so this pass should usually be followed up
by an additional rewrite to change the function being called.
Example:
printf("hello %d\n", 123);
If the string "hello %d\n" is marked target, then running
convert_format_string will replace this call with
printf(format_args!("hello {:}\n", 123 as i32));
At this point, it would be wise to replace the printf expression with a function that accepts
the std::fmt::Arguments produced by format_args!.
Trait Implementations
impl Transform for ConvertFormatArgs[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 ConvertFormatArgs
impl Sync for ConvertFormatArgs
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,