You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Rust] Look through typedefs to pass borrowed strings as &str (#1102)
wit-bindgen already knows to special-case passing strings by reference
and pass them as `&str` instead of naively passing them as `&String` and
requiring callers to have owned `Strings`. Implement this behavior for
type aliases of strings as well, so that in code like this:
```wit
type my-string = string;
foo: func(x: my-string);
```
the argument is `&str` instead of `&MyString` which is effectively
`&String`. And similar for lists.
This comes up in several functions in wasi-http; for example, in the
bindings for the `Fields::append` function, it enables this change:
```diff
@@ -5075,8 +5075,8 @@ pub mod wasi {
/// `field-value` are syntactically invalid.
pub fn append(
&self,
- name: &FieldName,
- value: &FieldValue,
+ name: &str,
+ value: &[u8],
) -> Result<(), HeaderError> {
unsafe {
#[repr(align(1))]
```
where `FieldName` and `FieldValue` are defined as:
```wit
pub type FieldKey = _rt::String;
pub type FieldName = FieldKey;
pub type FieldValue = _rt::Vec<u8>;
```
0 commit comments