(sep: String, parts: Args)
| 23 | /// Variadic join over `parts`, separated by `sep`. Showcases the trailing `Args` param. |
| 24 | #[plugin_fn] |
| 25 | fn join_all(sep: String, parts: Args) -> Result<String> { |
| 26 | let mut out = String::new(); |
| 27 | for (i, h) in parts.0.iter().enumerate() { |
| 28 | if i > 0 { out.push_str(&sep); } |
| 29 | out.push_str(&String::from_handle(h.raw())?); |
| 30 | } |
| 31 | Ok(out) |
| 32 | } |
| 33 | |
| 34 | /// Accumulates slug parts across calls; exercises mutable state and Option/Result returns. |
| 35 | #[plugin_class] |