From e97863785a100f840364900311dac8a57ed66ef9 Mon Sep 17 00:00:00 2001 From: MA Beaudet Date: Tue, 9 Nov 2021 12:18:41 +0100 Subject: [PATCH] fix: add wasm-bindgen as a feature and rename parallele feature to rayon --- Cargo.toml | 5 +++-- src/lib.rs | 13 +++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 90ef266..23f8cf9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,11 +7,12 @@ edition = "2021" crate-type = ["cdylib", "rlib"] [features] -parallel = ["rayon"] default = ["rand"] +wasm = ["wasm-bindgen", "getrandom"] [dependencies] rand = { version = "0.8.4", optional = true } rayon = { version = "1.5.1", optional = true } serde = { version = "1.0", optional = true, features = ["derive"] } -wasm-bindgen = "0.2.78" +wasm-bindgen = { version = "0.2.78", optional = true } +getrandom = { version = "0.2", features = ["js"], optional = true } diff --git a/src/lib.rs b/src/lib.rs index b343571..ca04d2f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,6 +22,7 @@ use constants::{ #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; +#[cfg(feature = "wasm")] use wasm_bindgen::prelude::*; #[derive(Debug)] @@ -111,7 +112,7 @@ pub fn init_deck() -> Vec { deck } -#[cfg(feature = "random")] +#[cfg(feature = "rand")] pub fn shuffle_deck(mut deck: Vec) -> Vec { use rand::prelude::*; let mut rng = thread_rng(); @@ -218,7 +219,7 @@ fn find_fast(mut u: u32) -> u16 { // } // } -#[wasm_bindgen] +#[cfg_attr(feature = "wasm", wasm_bindgen)] pub fn parse_cards(s: &str) -> Vec { s.trim() .split_whitespace() @@ -238,7 +239,7 @@ pub fn parse_cards(s: &str) -> Vec { /// assert_eq!(eval_hand(parse_cards("4s 4d 4h 4c 5d")), 140); /// assert_eq!(eval_hand(parse_cards("Ts 9s 8s 7s 6s 7h 6d")), 5); /// ``` -#[wasm_bindgen] +#[cfg_attr(feature = "wasm", wasm_bindgen)] pub fn eval_hand(cards: Vec) -> u16 { match cards.len() { 7 => eval_7hand(&cards.try_into().unwrap()), @@ -293,7 +294,7 @@ pub fn eval_7hand(hand: &[u32; 7]) -> u16 { /// assert_eq!(eval, 1433); /// assert_eq!(hand_rank(eval), FLUSH); /// ``` -#[wasm_bindgen] +#[cfg_attr(feature = "wasm", wasm_bindgen)] pub fn hand_rank(i: u16) -> u8 { match i { 6186..=7462 => HIGH_CARD, @@ -309,7 +310,7 @@ pub fn hand_rank(i: u16) -> u8 { } } -#[wasm_bindgen] +#[cfg_attr(feature = "wasm-bindgen", wasm_bindgen)] pub fn frequency(i: u8) -> f32 { EXPECTED_FREQ[i as usize] / 2_598_960. } @@ -399,7 +400,7 @@ pub fn parallel_deck_freq_evaluator(deck: &[u32]) -> [u32; 10] { /// Concurrent evaluation of all five-card poker hands using rayon crate. /// /// This implementation is actually slower in release builds. -#[cfg(feature = "parallel")] +#[cfg(feature = "rayon")] pub fn concurrent_deck_freq_evaluator(deck: &[u32]) -> [u32; 10] { use rayon::prelude::*; -- 2.20.1