Limits
Renk is a syntax front end. It reads text, not types, so:
a.bis decided by name binding, not by type. A misread name usually fails to compile. Usefoo::new()to force a path, or(Unit).method()to force a value receiver. A name that does not resolve at such a dot gets a help line naming the other spelling, as inrenk read `String.nope` as the path `String::nope`; write `(String).nope` for a value.[...]after an expression is indexing unless it isname[...](or a CamelCaseName[...]before::or.name. Any other generic application uses Rust::<...>.- Macro and attribute token trees are opaque Rust tokens. Only the std format and expression macros listed in Macros are rewritten.
- Proc-macro DSLs are not parsed, except the multi-line
{blocks ofview!.
Conversion gaps
renk from-rust keeps the compiled meaning but not always the exact text:
- A unit or diverging expression that ends a block can gain a
;, as afterpanic!()or amatchstatement whose arms are expressions such asNone => v.clear(). - A
macro_rules!arm that starts on the item’s line, as inmacro_rules! m {() => {, moves to its own lines with a;after it.