diff --git a/src/analysis/rust_type.rs b/src/analysis/rust_type.rs index 24451150f..fb173fe50 100644 --- a/src/analysis/rust_type.rs +++ b/src/analysis/rust_type.rs @@ -339,6 +339,7 @@ impl<'env> RustTypeBuilder<'env> { skip_option = true; let inner_ref_mode = match *self.env.library.type_(inner_tid) { Class(..) | Interface(..) => RefMode::None, + _ if self.ref_mode.is_ref() && inner_tid == library::TypeId::tid_utf8() => RefMode::ByRefFake, _ => self.ref_mode, }; RustType::builder(&self.env, inner_tid) @@ -349,7 +350,11 @@ impl<'env> RustTypeBuilder<'env> { .map_any(|rust_type| { rust_type.alter_type(|typ| { if self.ref_mode.is_ref() { - format!("[{}]", typ) + if inner_tid == library::TypeId::tid_utf8() { + format!("[impl AsRef<{}>]", typ) + } else { + format!("[{}]", typ) + } } else { format!("Vec<{}>", typ) }