fix: add wasm-bindgen as a feature and rename parallele feature to rayon
authorMA Beaudet <ma@beaudet.xyz>
Tue, 9 Nov 2021 11:18:41 +0000 (12:18 +0100)
committerMA Beaudet <ma@beaudet.xyz>
Tue, 9 Nov 2021 11:18:41 +0000 (12:18 +0100)
Cargo.toml
src/lib.rs

index 90ef266..23f8cf9 100644 (file)
@@ -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 }
index b343571..ca04d2f 100644 (file)
@@ -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<u32> {
     deck
 }
 
-#[cfg(feature = "random")]
+#[cfg(feature = "rand")]
 pub fn shuffle_deck(mut deck: Vec<u32>) -> Vec<u32> {
     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<u32> {
     s.trim()
         .split_whitespace()
@@ -238,7 +239,7 @@ pub fn parse_cards(s: &str) -> Vec<u32> {
 /// 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<u32>) -> 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::*;