wit-bindgen icon indicating copy to clipboard operation
wit-bindgen copied to clipboard

Rust: Creating a large tuple results in error, as large tuples do not implement fmt::Debug

Open sfulham opened this issue 1 year ago • 1 comments

When using a tuple as a fixed length array (in my case for the purposes of storing a UUID in a 16-byte buffer) results in the following error:

error[E0277]: `(u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8)` doesn't implement `Debug`
  --> src/bindings.rs:69:39
   |
69 |                         .field("key", &self.key)
   |                                       ^^^^^^^^^ `(u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8)` cannot be formatted using `{:?}` because it doesn't implement `Debug`
   |
   = help: the trait `Debug` is not implemented for `(u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8)`
   = help: the following other types implement trait `Debug`:
             ()
             (A, Z, Y, X, W, V, U, T)
             (B, A, Z, Y, X, W, V, U, T)
             (C, B, A, Z, Y, X, W, V, U, T)
             (D, C, B, A, Z, Y, X, W, V, U, T)
             (E, D, C, B, A, Z, Y, X, W, V, U, T)
             (T,)
             (U, T)
           and 5 others
   = note: required for the cast from `&(u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8)` to `&dyn Debug

This could be fixed by implementing https://github.com/WebAssembly/component-model/pull/384 and using list<u8,16> which could be stored in rust as [u8;16]

sfulham avatar Nov 24 '24 04:11 sfulham

Thanks for your report. As a workaround until this is solved, can you define your uuid as a record instead of a tuple?

pchickey avatar Nov 24 '24 20:11 pchickey