From cfa0ec8dbb7d21306d54ea0ffee5f018997f04e8 Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Tue, 5 Jan 2021 22:23:13 +0900 Subject: [PATCH] Merge auto_enums_core and auto_enums_derive into main auto_enums crate --- CHANGELOG.md | 2 + Cargo.toml | 54 +++--- derive/build.rs => build.rs | 0 core/Cargo.toml | 32 ---- core/LICENSE-APACHE | 177 ------------------ core/LICENSE-MIT | 23 --- core/src/lib.rs | 33 ---- derive/Cargo.toml | 85 --------- derive/LICENSE-APACHE | 177 ------------------ derive/LICENSE-MIT | 23 --- derive/src/lib.rs | 48 ----- {core/src => src}/auto_enum/context.rs | 0 {core/src => src}/auto_enum/expr.rs | 0 {core/src => src}/auto_enum/mod.rs | 0 {core/src => src}/auto_enum/type_analysis.rs | 0 {core/src => src}/auto_enum/visitor.rs | 0 {derive/src => src}/derive/core/convert.rs | 0 {derive/src => src}/derive/core/fmt.rs | 0 {derive/src => src}/derive/core/future.rs | 0 {derive/src => src}/derive/core/iter.rs | 0 {derive/src => src}/derive/core/mod.rs | 0 {derive/src => src}/derive/core/ops.rs | 0 .../src => src}/derive/external/futures01.rs | 0 .../src => src}/derive/external/futures03.rs | 0 {derive/src => src}/derive/external/mod.rs | 0 {derive/src => src}/derive/external/rayon.rs | 0 {derive/src => src}/derive/external/serde.rs | 0 .../src => src}/derive/external/tokio01.rs | 0 .../src => src}/derive/external/tokio02.rs | 0 .../src => src}/derive/external/tokio03.rs | 0 {derive/src => src}/derive/external/tokio1.rs | 0 {derive/src => src}/derive/mod.rs | 1 + {derive/src => src}/derive/std/error.rs | 0 {derive/src => src}/derive/std/io.rs | 0 {derive/src => src}/derive/std/mod.rs | 0 {derive/src => src}/derive/ty_impls/mod.rs | 0 .../src => src}/derive/ty_impls/transpose.rs | 0 {derive/src => src/derive}/utils.rs | 0 {derive/src => src}/enum_derive.rs | 0 src/lib.rs | 37 +++- {core/src => src}/utils.rs | 0 41 files changed, 65 insertions(+), 627 deletions(-) rename derive/build.rs => build.rs (100%) delete mode 100644 core/Cargo.toml delete mode 100644 core/LICENSE-APACHE delete mode 100644 core/LICENSE-MIT delete mode 100644 core/src/lib.rs delete mode 100644 derive/Cargo.toml delete mode 100644 derive/LICENSE-APACHE delete mode 100644 derive/LICENSE-MIT delete mode 100644 derive/src/lib.rs rename {core/src => src}/auto_enum/context.rs (100%) rename {core/src => src}/auto_enum/expr.rs (100%) rename {core/src => src}/auto_enum/mod.rs (100%) rename {core/src => src}/auto_enum/type_analysis.rs (100%) rename {core/src => src}/auto_enum/visitor.rs (100%) rename {derive/src => src}/derive/core/convert.rs (100%) rename {derive/src => src}/derive/core/fmt.rs (100%) rename {derive/src => src}/derive/core/future.rs (100%) rename {derive/src => src}/derive/core/iter.rs (100%) rename {derive/src => src}/derive/core/mod.rs (100%) rename {derive/src => src}/derive/core/ops.rs (100%) rename {derive/src => src}/derive/external/futures01.rs (100%) rename {derive/src => src}/derive/external/futures03.rs (100%) rename {derive/src => src}/derive/external/mod.rs (100%) rename {derive/src => src}/derive/external/rayon.rs (100%) rename {derive/src => src}/derive/external/serde.rs (100%) rename {derive/src => src}/derive/external/tokio01.rs (100%) rename {derive/src => src}/derive/external/tokio02.rs (100%) rename {derive/src => src}/derive/external/tokio03.rs (100%) rename {derive/src => src}/derive/external/tokio1.rs (100%) rename {derive/src => src}/derive/mod.rs (89%) rename {derive/src => src}/derive/std/error.rs (100%) rename {derive/src => src}/derive/std/io.rs (100%) rename {derive/src => src}/derive/std/mod.rs (100%) rename {derive/src => src}/derive/ty_impls/mod.rs (100%) rename {derive/src => src}/derive/ty_impls/transpose.rs (100%) rename {derive/src => src/derive}/utils.rs (100%) rename {derive/src => src}/enum_derive.rs (100%) rename {core/src => src}/utils.rs (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70161ab5..fd9ffdac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com ## [Unreleased] +- [Merge `auto_enums_core` and `auto_enums_derive` crates into main `auto_enums` crate.](https://github.com/taiki-e/auto_enums/pull/123) + ## [0.7.12] - 2021-01-05 - Exclude unneeded files from crates.io. diff --git a/Cargo.toml b/Cargo.toml index 763b176b..0f308276 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "auto_enums" -version = "0.7.12" +version = "0.8.0-dev" authors = ["Taiki Endo "] edition = "2018" license = "Apache-2.0 OR MIT" @@ -19,71 +19,79 @@ all-features = true targets = ["x86_64-unknown-linux-gnu"] [workspace] -members = ["core", "derive", "tests/doc"] +members = ["tests/doc"] + +[lib] +proc-macro = true [features] # Default features. default = ["std"] # Analyze return type of function and `let` binding. -type_analysis = ["auto_enums_core/type_analysis"] +type_analysis = [] # Enable to use `transpose*` methods. -transpose_methods = ["auto_enums_derive/transpose_methods"] +transpose_methods = [] # ============================================================================== # [std|core] libraries # Enable to use `std` library's traits. -std = ["auto_enums_derive/std"] +std = [] # Enable to use `[std|core]::ops`'s `Deref`, `DerefMut`, `Index`, `IndexMut`, and `RangeBounds` traits. -ops = ["auto_enums_derive/ops"] +ops = [] # Enable to use `[std|core]::convert`'s `AsRef` and `AsMut` traits. -convert = ["auto_enums_derive/convert"] +convert = [] # Enable to use `[std|core]::fmt`'s traits other than `Debug`, `Display` and `Write` -fmt = ["auto_enums_derive/fmt"] +fmt = [] # ============================================================================== # Using external libraries # https://docs.rs/futures/0.3 -futures03 = ["auto_enums_derive/futures03"] +futures03 = [] # https://docs.rs/futures/0.1 -futures01 = ["auto_enums_derive/futures01"] +futures01 = [] # TODO: remove this in favor of futures03. -futures = ["auto_enums_derive/futures"] +futures = [] # https://docs.rs/rayon/1 -rayon = ["auto_enums_derive/rayon"] +rayon = [] # https://docs.rs/serde/1 -serde = ["auto_enums_derive/serde"] +serde = [] # https://docs.rs/tokio/1 -tokio1 = ["auto_enums_derive/tokio1"] +tokio1 = [] # https://docs.rs/tokio/0.3 -tokio03 = ["auto_enums_derive/tokio03"] +tokio03 = [] # https://docs.rs/tokio/0.2 -tokio02 = ["auto_enums_derive/tokio02"] +tokio02 = [] # https://docs.rs/tokio/0.1 -tokio01 = ["auto_enums_derive/tokio01"] +tokio01 = [] # ============================================================================== # Unstable features # These features are outside of the normal semver guarantees and require the # `unstable` feature as an explicit opt-in to unstable API. -unstable = ["auto_enums_derive/unstable"] +unstable = [] # Enable unstable features of [std|core] libraries # Enable to use `[std|core]::ops::Generator` trait. -generator_trait = ["auto_enums_derive/generator_trait"] +generator_trait = [] # Enable to use `[std|core]::ops`'s `Fn`, `FnMut`, and `FnOnce` traits. -fn_traits = ["auto_enums_derive/fn_traits"] +fn_traits = [] # Enable to use `[std|core]::iter::TrustedLen` trait. -trusted_len = ["auto_enums_derive/trusted_len"] +trusted_len = [] + +[build-dependencies] +autocfg = "1" # NB: futures*, tokio*, serde, and rayon are public dependencies. [dependencies] -auto_enums_core = { version = "=0.7.12", path = "core", default-features = false } -auto_enums_derive = { version = "=0.7.12", path = "derive", default-features = false } +derive_utils = { version = "0.11" } +proc-macro2 = "1" +quote = "1" +syn = { version = "1", features = ["full", "visit-mut"] } [dev-dependencies] rustversion = "1" diff --git a/derive/build.rs b/build.rs similarity index 100% rename from derive/build.rs rename to build.rs diff --git a/core/Cargo.toml b/core/Cargo.toml deleted file mode 100644 index 3236f72d..00000000 --- a/core/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "auto_enums_core" -version = "0.7.12" -authors = ["Taiki Endo "] -edition = "2018" -license = "Apache-2.0 OR MIT" -repository = "https://github.com/taiki-e/auto_enums" -documentation = "https://docs.rs/auto_enums_core" -keywords = ["enum", "macros", "derive", "attribute"] -categories = ["rust-patterns"] -description = """ -An internal crate to support auto_enums - do not use directly -""" - -[package.metadata.docs.rs] -all-features = true -targets = ["x86_64-unknown-linux-gnu"] - -[lib] -proc-macro = true - -[features] -# Default features. -default = [] - -# Analyze return type of function and `let` binding. -type_analysis = [] - -[dependencies] -proc-macro2 = "1" -quote = "1" -syn = { version = "1", features = ["full", "visit-mut"] } diff --git a/core/LICENSE-APACHE b/core/LICENSE-APACHE deleted file mode 100644 index f433b1a5..00000000 --- a/core/LICENSE-APACHE +++ /dev/null @@ -1,177 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS diff --git a/core/LICENSE-MIT b/core/LICENSE-MIT deleted file mode 100644 index 31aa7938..00000000 --- a/core/LICENSE-MIT +++ /dev/null @@ -1,23 +0,0 @@ -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/core/src/lib.rs b/core/src/lib.rs deleted file mode 100644 index 2c542ddd..00000000 --- a/core/src/lib.rs +++ /dev/null @@ -1,33 +0,0 @@ -//! An internal crate to support auto_enums - **do not use directly** - -#![doc(test( - no_crate_inject, - attr( - deny(warnings, rust_2018_idioms, single_use_lifetimes), - allow(dead_code, unused_variables) - ) -))] -#![forbid(unsafe_code)] -#![warn(future_incompatible, rust_2018_idioms, unreachable_pub)] -// It cannot be included in the published code because these lints have false positives in the minimum required version. -#![cfg_attr(test, warn(single_use_lifetimes))] -#![warn(clippy::all, clippy::default_trait_access)] - -// older compilers require explicit `extern crate`. -#[allow(unused_extern_crates)] -extern crate proc_macro; - -#[macro_use] -mod utils; - -mod auto_enum; - -use proc_macro::TokenStream; - -/// An attribute macro for to allow multiple return types by automatically generated enum. -/// -/// See crate level documentation for details. -#[proc_macro_attribute] -pub fn auto_enum(args: TokenStream, input: TokenStream) -> TokenStream { - crate::auto_enum::attribute(args.into(), input.into()).into() -} diff --git a/derive/Cargo.toml b/derive/Cargo.toml deleted file mode 100644 index 120395d9..00000000 --- a/derive/Cargo.toml +++ /dev/null @@ -1,85 +0,0 @@ -[package] -name = "auto_enums_derive" -version = "0.7.12" -authors = ["Taiki Endo "] -edition = "2018" -license = "Apache-2.0 OR MIT" -repository = "https://github.com/taiki-e/auto_enums" -documentation = "https://docs.rs/auto_enums_derive" -keywords = ["enum", "macros", "derive", "attribute"] -categories = ["rust-patterns"] -description = """ -An internal crate to support auto_enums - do not use directly -""" - -[package.metadata.docs.rs] -all-features = true -targets = ["x86_64-unknown-linux-gnu"] - -[lib] -proc-macro = true - -[features] -# Default features. -default = ["std"] - -# Enable to use `transpose*` methods. -transpose_methods = [] - -# ============================================================================== -# [std|core] libraries - -# Enable to use `std` library's traits. -std = [] -# Enable to use `[std|core]::ops`'s `Deref`, `DerefMut`, `Index`, `IndexMut`, and `RangeBounds` traits. -ops = [] -# Enable to use `[std|core]::convert`'s `AsRef` and `AsMut` traits. -convert = [] -# Enable to use `[std|core]::fmt`'s traits other than `Debug`, `Display` and `Write` -fmt = [] - -# ============================================================================== -# external libraries - -# https://docs.rs/futures/0.3 -futures03 = [] -# https://docs.rs/futures/0.1 -futures01 = [] -# TODO: remove this in favor of futures03. -futures = ["futures03"] -# https://docs.rs/rayon/1 -rayon = [] -# https://docs.rs/serde/1 -serde = [] -# https://docs.rs/tokio/1 -tokio1 = [] -# https://docs.rs/tokio/0.3 -tokio03 = [] -# https://docs.rs/tokio/0.2 -tokio02 = [] -# https://docs.rs/tokio/0.1 -tokio01 = [] - -# ============================================================================== -# Unstable features -# These features are outside of the normal semver guarantees and require the -# `unstable` feature as an explicit opt-in to unstable API. -unstable = [] - -# Enable unstable features of [std|core] libraries - -# Enable to use `[std|core]::ops::Generator` trait. -generator_trait = [] -# Enable to use `Fn`, `FnMut`, and `FnOnce` traits. -fn_traits = [] -# Enable to use `[std|core]::iter::TrustedLen` trait. -trusted_len = [] - -[build-dependencies] -autocfg = "1" - -[dependencies] -derive_utils = { version = "0.11" } -proc-macro2 = "1" -quote = "1" -syn = { version = "1", features = ["full"] } diff --git a/derive/LICENSE-APACHE b/derive/LICENSE-APACHE deleted file mode 100644 index f433b1a5..00000000 --- a/derive/LICENSE-APACHE +++ /dev/null @@ -1,177 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS diff --git a/derive/LICENSE-MIT b/derive/LICENSE-MIT deleted file mode 100644 index 31aa7938..00000000 --- a/derive/LICENSE-MIT +++ /dev/null @@ -1,23 +0,0 @@ -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/derive/src/lib.rs b/derive/src/lib.rs deleted file mode 100644 index 36244348..00000000 --- a/derive/src/lib.rs +++ /dev/null @@ -1,48 +0,0 @@ -//! An internal crate to support auto_enums - **do not use directly** - -#![doc(test( - no_crate_inject, - attr( - deny(warnings, rust_2018_idioms, single_use_lifetimes), - allow(dead_code, unused_variables) - ) -))] -#![forbid(unsafe_code)] -#![warn(future_incompatible, rust_2018_idioms, single_use_lifetimes, unreachable_pub)] -#![warn(clippy::all, clippy::default_trait_access)] - -#[cfg(all(feature = "generator_trait", not(feature = "unstable")))] -compile_error!( - "The `generator_trait` feature requires the `unstable` feature as an explicit opt-in to unstable features" -); - -#[cfg(all(feature = "fn_traits", not(feature = "unstable")))] -compile_error!( - "The `fn_traits` feature requires the `unstable` feature as an explicit opt-in to unstable features" -); - -#[cfg(all(feature = "trusted_len", not(feature = "unstable")))] -compile_error!( - "The `trusted_len` feature requires the `unstable` feature as an explicit opt-in to unstable features" -); - -// older compilers require explicit `extern crate`. -#[allow(unused_extern_crates)] -extern crate proc_macro; - -#[macro_use] -mod utils; - -mod derive; -mod enum_derive; - -use proc_macro::TokenStream; - -/// An attribute macro like a wrapper of `#[derive]`, implementing -/// the supported traits and passing unsupported traits to `#[derive]`. -/// -/// See crate level documentation for details. -#[proc_macro_attribute] -pub fn enum_derive(args: TokenStream, input: TokenStream) -> TokenStream { - crate::enum_derive::attribute(args.into(), input.into()).into() -} diff --git a/core/src/auto_enum/context.rs b/src/auto_enum/context.rs similarity index 100% rename from core/src/auto_enum/context.rs rename to src/auto_enum/context.rs diff --git a/core/src/auto_enum/expr.rs b/src/auto_enum/expr.rs similarity index 100% rename from core/src/auto_enum/expr.rs rename to src/auto_enum/expr.rs diff --git a/core/src/auto_enum/mod.rs b/src/auto_enum/mod.rs similarity index 100% rename from core/src/auto_enum/mod.rs rename to src/auto_enum/mod.rs diff --git a/core/src/auto_enum/type_analysis.rs b/src/auto_enum/type_analysis.rs similarity index 100% rename from core/src/auto_enum/type_analysis.rs rename to src/auto_enum/type_analysis.rs diff --git a/core/src/auto_enum/visitor.rs b/src/auto_enum/visitor.rs similarity index 100% rename from core/src/auto_enum/visitor.rs rename to src/auto_enum/visitor.rs diff --git a/derive/src/derive/core/convert.rs b/src/derive/core/convert.rs similarity index 100% rename from derive/src/derive/core/convert.rs rename to src/derive/core/convert.rs diff --git a/derive/src/derive/core/fmt.rs b/src/derive/core/fmt.rs similarity index 100% rename from derive/src/derive/core/fmt.rs rename to src/derive/core/fmt.rs diff --git a/derive/src/derive/core/future.rs b/src/derive/core/future.rs similarity index 100% rename from derive/src/derive/core/future.rs rename to src/derive/core/future.rs diff --git a/derive/src/derive/core/iter.rs b/src/derive/core/iter.rs similarity index 100% rename from derive/src/derive/core/iter.rs rename to src/derive/core/iter.rs diff --git a/derive/src/derive/core/mod.rs b/src/derive/core/mod.rs similarity index 100% rename from derive/src/derive/core/mod.rs rename to src/derive/core/mod.rs diff --git a/derive/src/derive/core/ops.rs b/src/derive/core/ops.rs similarity index 100% rename from derive/src/derive/core/ops.rs rename to src/derive/core/ops.rs diff --git a/derive/src/derive/external/futures01.rs b/src/derive/external/futures01.rs similarity index 100% rename from derive/src/derive/external/futures01.rs rename to src/derive/external/futures01.rs diff --git a/derive/src/derive/external/futures03.rs b/src/derive/external/futures03.rs similarity index 100% rename from derive/src/derive/external/futures03.rs rename to src/derive/external/futures03.rs diff --git a/derive/src/derive/external/mod.rs b/src/derive/external/mod.rs similarity index 100% rename from derive/src/derive/external/mod.rs rename to src/derive/external/mod.rs diff --git a/derive/src/derive/external/rayon.rs b/src/derive/external/rayon.rs similarity index 100% rename from derive/src/derive/external/rayon.rs rename to src/derive/external/rayon.rs diff --git a/derive/src/derive/external/serde.rs b/src/derive/external/serde.rs similarity index 100% rename from derive/src/derive/external/serde.rs rename to src/derive/external/serde.rs diff --git a/derive/src/derive/external/tokio01.rs b/src/derive/external/tokio01.rs similarity index 100% rename from derive/src/derive/external/tokio01.rs rename to src/derive/external/tokio01.rs diff --git a/derive/src/derive/external/tokio02.rs b/src/derive/external/tokio02.rs similarity index 100% rename from derive/src/derive/external/tokio02.rs rename to src/derive/external/tokio02.rs diff --git a/derive/src/derive/external/tokio03.rs b/src/derive/external/tokio03.rs similarity index 100% rename from derive/src/derive/external/tokio03.rs rename to src/derive/external/tokio03.rs diff --git a/derive/src/derive/external/tokio1.rs b/src/derive/external/tokio1.rs similarity index 100% rename from derive/src/derive/external/tokio1.rs rename to src/derive/external/tokio1.rs diff --git a/derive/src/derive/mod.rs b/src/derive/mod.rs similarity index 89% rename from derive/src/derive/mod.rs rename to src/derive/mod.rs index 0f5e6367..f0af6898 100644 --- a/derive/src/derive/mod.rs +++ b/src/derive/mod.rs @@ -1,4 +1,5 @@ #![allow(clippy::unnecessary_wraps)] +#![allow(clippy::wildcard_imports)] pub(crate) mod core; pub(crate) mod external; diff --git a/derive/src/derive/std/error.rs b/src/derive/std/error.rs similarity index 100% rename from derive/src/derive/std/error.rs rename to src/derive/std/error.rs diff --git a/derive/src/derive/std/io.rs b/src/derive/std/io.rs similarity index 100% rename from derive/src/derive/std/io.rs rename to src/derive/std/io.rs diff --git a/derive/src/derive/std/mod.rs b/src/derive/std/mod.rs similarity index 100% rename from derive/src/derive/std/mod.rs rename to src/derive/std/mod.rs diff --git a/derive/src/derive/ty_impls/mod.rs b/src/derive/ty_impls/mod.rs similarity index 100% rename from derive/src/derive/ty_impls/mod.rs rename to src/derive/ty_impls/mod.rs diff --git a/derive/src/derive/ty_impls/transpose.rs b/src/derive/ty_impls/transpose.rs similarity index 100% rename from derive/src/derive/ty_impls/transpose.rs rename to src/derive/ty_impls/transpose.rs diff --git a/derive/src/utils.rs b/src/derive/utils.rs similarity index 100% rename from derive/src/utils.rs rename to src/derive/utils.rs diff --git a/derive/src/enum_derive.rs b/src/enum_derive.rs similarity index 100% rename from derive/src/enum_derive.rs rename to src/enum_derive.rs diff --git a/src/lib.rs b/src/lib.rs index 307bbb72..b3a1baf9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -850,7 +850,6 @@ //! [tokio03]: https://docs.rs/tokio/0.3 //! [tokio1]: https://docs.rs/tokio/1 -#![no_std] #![doc(test( no_crate_inject, attr( @@ -859,7 +858,9 @@ ) ))] #![forbid(unsafe_code)] -#![warn(future_incompatible, rust_2018_idioms, single_use_lifetimes, unreachable_pub)] +#![warn(future_incompatible, rust_2018_idioms, unreachable_pub)] +// It cannot be included in the published code because these lints have false positives in the minimum required version. +#![cfg_attr(test, warn(single_use_lifetimes))] #![warn(clippy::all, clippy::default_trait_access)] #[cfg(all(feature = "generator_trait", not(feature = "unstable")))] @@ -877,8 +878,32 @@ compile_error!( "The `trusted_len` feature requires the `unstable` feature as an explicit opt-in to unstable features" ); -#[doc(inline)] -pub use auto_enums_core::auto_enum; +// older compilers require explicit `extern crate`. +#[allow(unused_extern_crates)] +extern crate proc_macro; -#[doc(inline)] -pub use auto_enums_derive::enum_derive; +#[macro_use] +mod utils; + +mod auto_enum; +mod derive; +mod enum_derive; + +use proc_macro::TokenStream; + +/// An attribute macro like a wrapper of `#[derive]`, implementing +/// the supported traits and passing unsupported traits to `#[derive]`. +/// +/// See crate level documentation for details. +#[proc_macro_attribute] +pub fn enum_derive(args: TokenStream, input: TokenStream) -> TokenStream { + crate::enum_derive::attribute(args.into(), input.into()).into() +} + +/// An attribute macro for to allow multiple return types by automatically generated enum. +/// +/// See crate level documentation for details. +#[proc_macro_attribute] +pub fn auto_enum(args: TokenStream, input: TokenStream) -> TokenStream { + crate::auto_enum::attribute(args.into(), input.into()).into() +} diff --git a/core/src/utils.rs b/src/utils.rs similarity index 100% rename from core/src/utils.rs rename to src/utils.rs