Previous to this lesson, we set up our own Rust/wasm project from scratch.
The Rust/wasm team ships a template for you to get started right away. In this lesson, you'll see how to initialize the template (assumes you have wasm-pack
installed) and see how this template gives you additional custom Rust features in addition to the WasmPackPlugin
that will build your library on every file change.
When running npm start
, I unfortunately get this:
wasm-pack error: Compiling your crate to WebAssembly
Caused by: Process exited with exit code: 101: `cargo build` did not exit successfully.
stdout:
stderr:
Downloading crates ...
Downloaded proc-macro2 v0.4.9
Downloaded quote v0.6.4
Downloaded version_check v0.1.4
Downloaded log v0.4.3
Downloaded syn v0.15.1
Downloaded serde_derive v1.0.70
Downloaded serde v1.0.70
Downloaded serde_json v1.0.24
Downloaded syn v0.14.5
Downloaded itoa v0.4.2
Compiling unicode-xid v0.1.0
Compiling version_check v0.1.4
Compiling serde v1.0.70
Compiling wasm-bindgen-shared v0.2.25
Compiling dtoa v0.4.3
Compiling itoa v0.4.2
Compiling cfg-if v0.1.5
Compiling wasm-bindgen v0.2.25
Compiling log v0.4.3
Compiling proc-macro2 v0.4.9
Compiling lazy_static v1.1.0
Compiling quote v0.6.4
Compiling syn v0.14.5
Compiling syn v0.15.1
Compiling serde_derive v1.0.70
Compiling serde_json v1.0.24
Compiling wasm-bindgen-backend v0.2.25
Compiling wasm-bindgen-macro-support v0.2.25
error[E0277]: the trait bound `&mut syn::Field: quote::ToTokens` is not satisfied
--> C:\Users\attila\.cargo\registry\src\github.com-1ecc6299db9ec823\wasm-bindgen-macro-support-0.2.25\src\parser.rs:376:44
|
376 | assert_not_variadic(&opts, &field)?;
| -^^^^^
| |
| the trait `quote::ToTokens` is not implemented for `&mut syn::Field`
| help: consider removing 1 leading `&`-references
|
= help: the following implementations were found:
<syn::Field as quote::ToTokens>
= note: required for the cast to the object type `dyn quote::ToTokens`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0277`.
error: Could not compile `wasm-bindgen-macro-support`.
To learn more, run the command again with --verbose.
I've created a Github issue for the rust webpack template in case the problem is on their end: https://github.com/rustwasm/rust-webpack-template/issues/57
same here, Attilla
Alright, issue solved.
I suppose this is a risk of nightly Rust. In the Github issue they said:
rustup update nightly
cargo update
# cd into the `crate/` directory within the project
wasm-pack build
Then cd'ing back into the project directory and doing npm start
now works :)
Fixed it! Thank you!!
npm init rust-webpack
does nothing for me but initiate an "empty" project. I have wasm-pack
installed, not really sure what I'm doing wrong.
Of course, a silly mistake by me, the installed npm version did not support init templates. Had to update npm.
Glad you figured it out @cbrevik
For anyone else getting an error on npm init rust-webpack
, it may be this issue: https://github.com/rustwasm/rust-webpack-template/issues/148. I had to upgrade git
, then it worked just fine.
The new version "@wasm-tool/wasm-pack-plugin": "^0.4.2"
generate a different project structure with different code. This course needs either an update or a pointer to the fixed version of the template generator. Otherwise it's not possible to follow.