]> git.lizzy.rs Git - enumset.git/commitdiff
Add a new std feature for enumset. Fixes #34
authorAlissa Rao <lymia@lymiahugs.com>
Tue, 5 Apr 2022 07:50:15 +0000 (00:50 -0700)
committerAlissa Rao <lymia@lymiahugs.com>
Tue, 5 Apr 2022 07:55:05 +0000 (00:55 -0700)
.travis.yml
enumset/Cargo.toml
enumset_derive/Cargo.toml
enumset_derive/src/lib.rs

index 5d75b6697e09e8ceba839a96885a1101f58f7c7d..8a378b4fcefe95170ba3ce6855b70ac2a1dcd938 100644 (file)
@@ -11,5 +11,6 @@ script:
   - cd "${TRAVIS_BUILD_DIR}/enumset"
   - cargo test
   - cargo test --features serde
-  - cargo test --release
-  - cargo test --features serde --release
+  - cargo test --features alloc
+  - cargo test --features std
+  - cargo test --release --all-features
index 3cf07d1e46589c2348b04ca84c994a1e1cdd0526..4c51da12cc31dd23f806d546b2574c94466bf516 100644 (file)
@@ -20,6 +20,8 @@ maintenance = { status = "actively-developed" }
 
 [features]
 serde = ["serde2", "enumset_derive/serde"]
+alloc = []
+std = ["alloc", "enumset_derive/proc-macro-crate"]
 
 [dependencies]
 enumset_derive = { version = "0.5.6", path = "../enumset_derive" }
index 882b742d5ec15f765dce78b44cfe95eeaa4629d0..def3be15be1be1563363b6fa16473b8a6ebc5c1f 100644 (file)
@@ -22,4 +22,4 @@ darling = { version = "0.13.0", default-features = false }
 syn = "1"
 quote = "1"
 proc-macro2 = "1"
-proc-macro-crate = "1.1.3"
+proc-macro-crate = { version = "1.1.3", optional = true }
index b779b8e743521982bce3048f722e872847dd97d9..76e98f7f849f680bb7c5a4308224722f6c5e8404 100644 (file)
@@ -6,7 +6,6 @@ use darling::*;
 use proc_macro::TokenStream;
 use proc_macro2::{TokenStream as SynTokenStream, Literal, Span};
 use std::collections::HashSet;
-use proc_macro_crate::FoundCrate;
 use syn::{*, Result, Error};
 use syn::spanned::Spanned;
 use quote::*;
@@ -241,16 +240,27 @@ impl EnumSetInfo {
 /// Generates the actual `EnumSetType` impl.
 fn enum_set_type_impl(info: EnumSetInfo) -> SynTokenStream {
     let name = &info.name;
+
     let enumset = match &info.crate_name {
         Some(crate_name) => quote!(::#crate_name),
         None => {
-            let crate_name = proc_macro_crate::crate_name("enumset");
-            match crate_name {
-                Ok(FoundCrate::Name(name)) => {
-                    let ident = Ident::new(&name, Span::call_site());
-                    quote!(::#ident)
+            #[cfg(feature = "proc-macro-crate")]
+            {
+                use proc_macro_crate::FoundCrate;
+
+                let crate_name = proc_macro_crate::crate_name("enumset");
+                match crate_name {
+                    Ok(FoundCrate::Name(name)) => {
+                        let ident = Ident::new(&name, Span::call_site());
+                        quote!(::#ident)
+                    }
+                    _ => quote!(::enumset),
                 }
-                _ => quote!(::enumset),
+            }
+
+            #[cfg(not(feature = "proc-macro-crate"))]
+            {
+                quote!(::enumset)
             }
         },
     };