wikipedia-wasm

Crates.iowikipedia-wasm
lib.rswikipedia-wasm
version0.1.1
sourcesrc
created_at2024-09-02 20:17:10.919424
updated_at2024-10-09 21:06:26.950168
descriptionAccess wikipedia articles from Rust
homepagehttps://github.com/Nvt500/wikipedia-rs-wasm
repositoryhttps://github.com/Nvt500/wikipedia-rs-wasm
max_upload_size
id1361016
size112,400
Nvt5 (Nvt500)

documentation

README

wikipedia-rs-wasm

Crates.io

Access wikipedia articles from Rust.

This is an alteration of the crate wikipedia to make it able to compile to wasm and should still work for other platforms.

The only downsides are anything returning an iterator actually returns a custom iterator that can use an async next which means no for loops and that your program will be all async but if it is going to be in wasm it probably was going to be anyway.

Also, the four tests that this crate fails the original crate also fails.

Example

use wikipedia_wasm::{Wikipedia, http};

#[tokio::main]
async fn main()
{
    let wiki = Wikipedia::<http::default::Client>::default();
    let page = wiki.page_from_title("World War II".to_string());
    let content = page.get_content().await.unwrap();
    assert!(content.starts_with("World War II or the Second World War (1 September 1939 – 2 September 1945)"));
}

Problem

The original crate used reqwest's blocking feature which cannot compile to wasm because of the internet's single thread nature or something like that.

Solution

  • Make most functions async
  • Make an async iterator

Original Crate by seppo0010

Commit count: 5

cargo fmt