From 12468438a30966b1d44e73fd9c4d33f63f42b868 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sun, 31 Dec 2023 10:26:02 +0100 Subject: [PATCH] `eframe`: Fix building the `wasm32` docs for `docs.rs` (#3757) * Closes https://github.com/emilk/egui/issues/3756 Fix suggested by @morionelab --- crates/eframe/Cargo.toml | 1 + crates/eframe/src/lib.rs | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/crates/eframe/Cargo.toml b/crates/eframe/Cargo.toml index 3d7d8a28f1e..09b98abdf5b 100644 --- a/crates/eframe/Cargo.toml +++ b/crates/eframe/Cargo.toml @@ -21,6 +21,7 @@ include = [ [package.metadata.docs.rs] all-features = true +rustc-args = ["--cfg=web_sys_unstable_apis"] targets = ["x86_64-unknown-linux-gnu", "wasm32-unknown-unknown"] [lib] diff --git a/crates/eframe/src/lib.rs b/crates/eframe/src/lib.rs index de226bc8e0a..d8b5bd1fdf9 100644 --- a/crates/eframe/src/lib.rs +++ b/crates/eframe/src/lib.rs @@ -9,6 +9,21 @@ //! In short, you implement [`App`] (especially [`App::update`]) and then //! call [`crate::run_native`] from your `main.rs`, and/or use `eframe::WebRunner` from your `lib.rs`. //! +//! ## Compiling for web +//! To get copy-paste working on web, you need to compile with +//! `export RUSTFLAGS=--cfg=web_sys_unstable_apis`. +//! +//! You need to install the `wasm32` target with `rustup target add wasm32-unknown-unknown`. +//! +//! Build the `.wasm` using `cargo build --target wasm32-unknown-unknown` +//! and then use [`wasm-bindgen`](https://github.com/rustwasm/wasm-bindgen) to generate the JavaScript glue code. +//! +//! See the [`eframe_template` repository](https://github.com/emilk/eframe_template/) for more. +//! +//! ## Simplified usage +//! If your app is only for native, and you don't need advanced features like state persistence, +//! then you can use the simpler function [`run_simple_native`]. +//! //! ## Usage, native: //! ``` no_run //! use eframe::egui; @@ -114,10 +129,6 @@ //! } //! ``` //! -//! ## Simplified usage -//! If your app is only for native, and you don't need advanced features like state persistence, -//! then you can use the simpler function [`run_simple_native`]. -//! //! ## Feature flags #![cfg_attr(feature = "document-features", doc = document_features::document_features!())] //!