Bug 1554347 - Revendor Rust dependencies.
authorEmilio Cobos Álvarez <emilio@crisal.io>
Sat, 25 May 2019 02:33:05 +0200
changeset 475544 c181191ec168645b74085465add4482c48e4bd78
parent 475543 d765b5354b83389e7dea71de8f0b88e40cb406db
child 475545 205478996507e2fe5852e05e92b558596d209738
push id36062
push useraciure@mozilla.com
push dateSat, 25 May 2019 09:39:13 +0000
treeherdermozilla-central@af54b2de7028 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1554347
milestone69.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1554347 - Revendor Rust dependencies.
Cargo.lock
third_party/rust/darling/.cargo-checksum.json
third_party/rust/darling/CHANGELOG.md
third_party/rust/darling/Cargo.toml
third_party/rust/darling/README.md
third_party/rust/darling/tests/supports.rs
third_party/rust/darling_core/.cargo-checksum.json
third_party/rust/darling_core/Cargo.toml
third_party/rust/darling_core/src/ast/data.rs
third_party/rust/darling_core/src/codegen/trait_impl.rs
third_party/rust/darling_core/src/error/mod.rs
third_party/rust/darling_core/src/lib.rs
third_party/rust/darling_core/src/options/shape.rs
third_party/rust/darling_core/src/usage/mod.rs
third_party/rust/darling_core/src/util/ident_list.rs
third_party/rust/darling_core/src/util/over_ride.rs
third_party/rust/darling_macro/.cargo-checksum.json
third_party/rust/darling_macro/Cargo.toml
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -840,41 +840,42 @@ version = "0.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "cmake 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
  "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "darling"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "darling_core 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "darling_macro 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)",
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "darling_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "darling_macro 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "darling_core"
-version = "0.8.6"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "ident_case 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
  "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "darling_macro"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "darling_core 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)",
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "darling_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
  "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "deflate"
 version = "0.7.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -882,17 +883,17 @@ dependencies = [
  "adler32 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "derive_common"
 version = "0.0.1"
 dependencies = [
- "darling 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
  "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
  "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "derive_more"
@@ -2930,17 +2931,17 @@ dependencies = [
  "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "walkdir 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "style_derive"
 version = "0.0.1"
 dependencies = [
- "darling 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "derive_common 0.0.1",
  "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
  "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
  "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -3126,17 +3127,17 @@ dependencies = [
  "smallvec 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "thin-slice 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "to_shmem_derive"
 version = "0.0.1"
 dependencies = [
- "darling 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "derive_common 0.0.1",
  "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
  "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
  "syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)",
  "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
@@ -3782,19 +3783,19 @@ dependencies = [
 "checksum cssparser 0.25.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e06795910fc2f585a75bdc9690fbcc51e83519f07b6eb981db43944643c04933"
 "checksum cssparser-macros 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b16e382d9b983fdb9ac6a36b37fdeb84ce3ea81f749febfee3463cfa7f24275e"
 "checksum cstr 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b6557bdb1dc9647eae1cf7f5601b14cd45fc3c7ccf2df618387416fe542da6ea"
 "checksum cstr-macros 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0f12dd847ec773fc98d75edba5394cb87d0f35e7ee548a4c81849ca6374b3d48"
 "checksum cubeb 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "db3f0df2ad5cb453126364a77921466ba6c1034e8bd9247f326cdb31430dbc2a"
 "checksum cubeb-backend 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "442cd5cfb980ff62730525278ce320d9b2ff635b725857ad3176832664262fec"
 "checksum cubeb-core 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0161f9327864922ba7a172c90bd86bc9094938433eca415e2c75629954045022"
 "checksum cubeb-sys 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3ba7540c17b90159cf7d7854da370998ff0560d9b90e2c9290bb588afa0edf95"
-"checksum darling 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9158d690bc62a3a57c3e45b85e4d50de2008b39345592c64efd79345c7e24be0"
-"checksum darling_core 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d2a368589465391e127e10c9e3a08efc8df66fd49b87dc8524c764bbe7f2ef82"
-"checksum darling_macro 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "244e8987bd4e174385240cde20a3657f607fb0797563c28255c353b5819a07b1"
+"checksum darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fcfbcb0c5961907597a7d1148e3af036268f2b773886b8bb3eeb1e1281d3d3d6"
+"checksum darling_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6afc018370c3bff3eb51f89256a6bdb18b4fdcda72d577982a14954a7a0b402c"
+"checksum darling_macro 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c6d8dac1c6f1d29a41c4712b4400f878cb4fcc4c7628f298dd75038e024998d1"
 "checksum deflate 0.7.19 (registry+https://github.com/rust-lang/crates.io-index)" = "8a6abb26e16e8d419b5c78662aa9f82857c2386a073da266840e474d5055ec86"
 "checksum derive_more 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3f57d78cf3bd45270dad4e70c21ec77a960b36c7a841ff9db76aaa775a8fb871"
 "checksum devd-rs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d009f166c0d9e9f9909dc751630b3a6411ab7f85a153d32d01deb364ffe52a7"
 "checksum diff 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "3c2b69f912779fbb121ceb775d74d51e915af17aaebc38d28a592843a2dd0a3a"
 "checksum digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f47366984d3ad862010e22c7ce81a7dbcaebbdfb37241a620f8b6596ee135c"
 "checksum dirs 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "88972de891f6118092b643d85a0b28e0678e0f948d7f879aa32f2d5aafe97d2a"
 "checksum docopt 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "db2906c2579b5b7207fc1e328796a9a8835dc44e22dbe8e460b1d636f9a7b225"
 "checksum dogear 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "26b7583e1427e296c852f3217eaab3890e698f742b8d7349beb1f40c4e946fc9"
--- a/third_party/rust/darling/.cargo-checksum.json
+++ b/third_party/rust/darling/.cargo-checksum.json
@@ -1,1 +1,1 @@
-{"files":{"CHANGELOG.md":"111bee96e6baf82f8898ada5f5395888253832ed641fc6013ad803ac6afaeaf0","Cargo.toml":"66f4111240094e9fed78c1989fc56b30fb94a58f2465eb0eacbaf050cc027b81","LICENSE":"8ea93490d74a5a1b1af3ff71d786271b3f1e5f0bea79ac16e02ec533cef040d6","README.md":"05357355cb87aea0b5bda29ce9f6ef03331717cf351c6cf7554855f5d825756e","examples/automatic_bounds.rs":"dcac3391ed568475cea17ec64c324283f9771dce61adb0a0dd7b8a9ee0bf954d","examples/consume_fields.rs":"ebf4bd8baf4e54ccaa926f910957183d6a5b1decaa87ab5ebcca6c8d38b6c6b3","examples/fallible_read.rs":"aa9d1e0aaba8f3eb4580e94e133839f7eb77fca61beed254f3d5e0f6d6981f00","examples/supports_struct.rs":"d69124e09d3d6b8e04a3af07a6af96c5df7cbd3d6953a51657b39088cc2c2de7","src/lib.rs":"07da20edb52c4aba30f2b680b28ca96cf995859566b0db3b1d2e0ee967249a18","src/macros_public.rs":"3ed7eb99f309d9cd600d3a09ff4dcf5cc5d787fb49e8e5ead6bb00e31e5e6793","tests/accrue_errors.rs":"f5ac2d8cb0a12284a845d25b9472c4605aa5e8c1cd66a6dd6ad64f1c749b2caf","tests/computed_bound.rs":"2313da96a250b5948ca06bf86cb7158b55a59eba75334aa8ba27a46b28ede6b5","tests/custom_bound.rs":"4dd3e8fd76734d8f262e857773f53a820229ad6e10fe6fbbbe1f636c7da9eab0","tests/defaults.rs":"b544be90d18be26305a757e8468bf8735356889b59c167294d118e32ee7f82ea","tests/enums_newtype.rs":"a09af70072e566bee1f6cad91675f3553c47333e51a0e389ebb47ae82de776a8","tests/enums_struct.rs":"e0097d7f947cf9e4612c9450c55ea5075c7f6fcbbf8cac7176449d92eebc9343","tests/enums_unit.rs":"8c075d5897b60b58cb71d6306e7fdd80851f5a147ae3010ba70ea100007364a3","tests/error.rs":"465f7634fa23f0076c93a9c5fc16ccde16119b874d64c8dabaf275b6b7ae61f2","tests/from_generics.rs":"79230ad21e8482cf6e6ceb0c74303bc0cdf77fbb951f46a6ba1006ecf1248fd5","tests/from_type_param.rs":"7c97745cdcea18a2d6f51e4da7426055a078287bf9f2c93d487057195efa2b30","tests/from_type_param_default.rs":"80787ef6527e7f76c2aac93b1f35a006a9c5e0df8deed61698eaac1127278021","tests/from_variant.rs":"2e804326302a62b979eae963e88f0a2cdb6a21ee9667407c361d178f8c0aadba","tests/generics.rs":"e08aea8a8de8f03e3c243bde650e250defbe340cef3e4c06935b2b3e46d2a376","tests/happy_path.rs":"c32daa68e2becdc2d6204985a19b437cfb49d7f1680e890578f0760dc9749b77","tests/multiple.rs":"0391be49bab07771d7e37d35fe17f6d9bf1aa6dc57e2c0e5c0912ab8e043128f","tests/newtype.rs":"3f029724467abc7a33aaf7b6a1feb7b6898eba578576afff338e73deb9fd2b3b","tests/skip.rs":"604861aa4d1dfdc4e5f38f8261be19b7240c650eb493b64ce0178f54c24a8d2d","tests/split_declaration.rs":"f509390f88549164af9218f1e5b07564b169a4481a20b738432ffb03c517b599","tests/suggestions.rs":"0afb756949be876aaae76974f119be811c783fb134a54978ff0453c537ff3174","tests/supports.rs":"3b096c3d893bf8e76f70219bc276cbfe04529091e9e8652af140f0f1b3a91270"},"package":"9158d690bc62a3a57c3e45b85e4d50de2008b39345592c64efd79345c7e24be0"}
\ No newline at end of file
+{"files":{"CHANGELOG.md":"625cb9ff905bb7bd60287f16f2ee5cf02422a2d30adee0a11190db4995b331ea","Cargo.toml":"4c383f964becb2555c6dbb318070e942055c89b45719ceefb0bfe6da647d5249","LICENSE":"8ea93490d74a5a1b1af3ff71d786271b3f1e5f0bea79ac16e02ec533cef040d6","README.md":"4999b473e69d92f51a82ab2d7ff89af5a49d16ad7ab9c6407d4bae08b2200c8d","examples/automatic_bounds.rs":"dcac3391ed568475cea17ec64c324283f9771dce61adb0a0dd7b8a9ee0bf954d","examples/consume_fields.rs":"ebf4bd8baf4e54ccaa926f910957183d6a5b1decaa87ab5ebcca6c8d38b6c6b3","examples/fallible_read.rs":"aa9d1e0aaba8f3eb4580e94e133839f7eb77fca61beed254f3d5e0f6d6981f00","examples/supports_struct.rs":"d69124e09d3d6b8e04a3af07a6af96c5df7cbd3d6953a51657b39088cc2c2de7","src/lib.rs":"07da20edb52c4aba30f2b680b28ca96cf995859566b0db3b1d2e0ee967249a18","src/macros_public.rs":"3ed7eb99f309d9cd600d3a09ff4dcf5cc5d787fb49e8e5ead6bb00e31e5e6793","tests/accrue_errors.rs":"f5ac2d8cb0a12284a845d25b9472c4605aa5e8c1cd66a6dd6ad64f1c749b2caf","tests/computed_bound.rs":"2313da96a250b5948ca06bf86cb7158b55a59eba75334aa8ba27a46b28ede6b5","tests/custom_bound.rs":"4dd3e8fd76734d8f262e857773f53a820229ad6e10fe6fbbbe1f636c7da9eab0","tests/defaults.rs":"b544be90d18be26305a757e8468bf8735356889b59c167294d118e32ee7f82ea","tests/enums_newtype.rs":"a09af70072e566bee1f6cad91675f3553c47333e51a0e389ebb47ae82de776a8","tests/enums_struct.rs":"e0097d7f947cf9e4612c9450c55ea5075c7f6fcbbf8cac7176449d92eebc9343","tests/enums_unit.rs":"8c075d5897b60b58cb71d6306e7fdd80851f5a147ae3010ba70ea100007364a3","tests/error.rs":"465f7634fa23f0076c93a9c5fc16ccde16119b874d64c8dabaf275b6b7ae61f2","tests/from_generics.rs":"79230ad21e8482cf6e6ceb0c74303bc0cdf77fbb951f46a6ba1006ecf1248fd5","tests/from_type_param.rs":"7c97745cdcea18a2d6f51e4da7426055a078287bf9f2c93d487057195efa2b30","tests/from_type_param_default.rs":"80787ef6527e7f76c2aac93b1f35a006a9c5e0df8deed61698eaac1127278021","tests/from_variant.rs":"2e804326302a62b979eae963e88f0a2cdb6a21ee9667407c361d178f8c0aadba","tests/generics.rs":"e08aea8a8de8f03e3c243bde650e250defbe340cef3e4c06935b2b3e46d2a376","tests/happy_path.rs":"c32daa68e2becdc2d6204985a19b437cfb49d7f1680e890578f0760dc9749b77","tests/multiple.rs":"0391be49bab07771d7e37d35fe17f6d9bf1aa6dc57e2c0e5c0912ab8e043128f","tests/newtype.rs":"3f029724467abc7a33aaf7b6a1feb7b6898eba578576afff338e73deb9fd2b3b","tests/skip.rs":"604861aa4d1dfdc4e5f38f8261be19b7240c650eb493b64ce0178f54c24a8d2d","tests/split_declaration.rs":"f509390f88549164af9218f1e5b07564b169a4481a20b738432ffb03c517b599","tests/suggestions.rs":"0afb756949be876aaae76974f119be811c783fb134a54978ff0453c537ff3174","tests/supports.rs":"8564709d7e63b124cda91f7e21c890037200e533d0403ffd7eb075403cf58926"},"package":"fcfbcb0c5961907597a7d1148e3af036268f2b773886b8bb3eeb1e1281d3d3d6"}
\ No newline at end of file
--- a/third_party/rust/darling/CHANGELOG.md
+++ b/third_party/rust/darling/CHANGELOG.md
@@ -1,10 +1,15 @@
 # Changelog
 
+## v0.9.0 (March 20, 2019)
+- Enable "did you mean" suggestions by default
+- Make `darling_core::{codegen, options}` private [#58](https://github.com/TedDriggs/darling/issues/58)
+- Fix `Override::as_mut`: [#66](https://github.com/TedDriggs/darling/issues/66)
+
 ## v0.8.6 (March 18, 2019)
 - Added "did you mean" suggestions for unknown fields behind the `suggestions` flag [#60](https://github.com/TedDriggs/issues/60)
 - Added `Error::unknown_field_with_alts` to support the suggestion use-case.
 - Added `ast::Fields::len` and `ast::Fields::is_empty` methods.
 
 ## v0.8.5 (February 4, 2019)
 - Accept unquoted positive numeric literals [#52](https://github.com/TedDriggs/issues/52)
 - Add `FromMeta` to the `syn::Lit` enum and its variants
--- a/third_party/rust/darling/Cargo.toml
+++ b/third_party/rust/darling/Cargo.toml
@@ -7,35 +7,39 @@
 #
 # If you believe there's an error in this file please file an
 # issue against the rust-lang/cargo repository. If you're
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
 [package]
 name = "darling"
-version = "0.8.6"
+version = "0.9.0"
 authors = ["Ted Driggs <ted.driggs@outlook.com>"]
 exclude = ["/.travis.yml", "/publish.sh"]
 description = "A proc-macro library for reading attributes into structs when\nimplementing custom derives.\n"
-documentation = "https://docs.rs/darling/0.8.6"
+documentation = "https://docs.rs/darling/0.9.0"
 readme = "README.md"
 license = "MIT"
 repository = "https://github.com/TedDriggs/darling"
 [dependencies.darling_core]
-version = "=0.8.6"
+version = "=0.9.0"
 
 [dependencies.darling_macro]
-version = "=0.8.6"
+version = "=0.9.0"
 [dev-dependencies.proc-macro2]
 version = "0.4"
 
 [dev-dependencies.quote]
 version = "0.6"
 
 [dev-dependencies.syn]
 version = "0.15.26"
 
 [features]
+default = ["suggestions"]
 diagnostics = ["darling_core/diagnostics"]
 suggestions = ["darling_core/suggestions"]
+[badges.maintenance]
+status = "actively-developed"
+
 [badges.travis-ci]
 repository = "TedDriggs/darling"
--- a/third_party/rust/darling/README.md
+++ b/third_party/rust/darling/README.md
@@ -1,24 +1,34 @@
 Darling
 =======
 
 [![Build Status](https://travis-ci.org/TedDriggs/darling.svg?branch=master)](https://travis-ci.org/TedDriggs/darling)
 [![Latest Version](https://img.shields.io/crates/v/darling.svg)](https://crates.io/crates/darling)
+[![Rustc Version 1.18+](https://img.shields.io/badge/rustc-1.18+-lightgray.svg)](https://blog.rust-lang.org/2017/06/08/Rust-1.18.html)
 
 `darling` is a crate for proc macro authors, which enables parsing attributes into structs. It is heavily inspired by `serde` both in its internals and in its API.
 
+# Benefits
+* Easy and declarative parsing of macro input - make your proc-macros highly controllable with minimal time investment.
+* Great validation and errors, no work required. When users of your proc-macro make a mistake, `darling` makes sure they get error markers at the right place in their source, and provides "did you mean" suggestions for misspelled fields.
+
 # Usage
 `darling` provides a set of traits which can be derived or manually implemented.
 
 1. `FromMeta` is used to extract values from a meta-item in an attribute. Implementations are likely reusable for many libraries, much like `FromStr` or `serde::Deserialize`. Trait implementations are provided for primitives, some std types, and some `syn` types.
 2. `FromDeriveInput` is implemented or derived by each proc-macro crate which depends on `darling`. This is the root for input parsing; it gets access to the identity, generics, and visibility of the target type, and can specify which attribute names should be parsed or forwarded from the input AST.
 3. `FromField` is implemented or derived by each proc-macro crate which depends on `darling`. Structs deriving this trait will get access to the identity (if it exists), type, and visibility of the field.
 4. `FromVariant` is implemented or derived by each proc-macro crate which depends on `darling`. Structs deriving this trait will get access to the identity and contents of the variant, which can be transformed the same as any other `darling` input.
 
+## Additional Modules
+* `darling::ast` provides generic types for representing the AST.
+* `darling::usage` provides traits and functions for determining where type parameters and lifetimes are used in a struct or enum.
+* `darling::util` provides helper types with special `FromMeta` implementations, such as `IdentList`.
+
 # Example
 
 ```rust,ignore
 #[macro_use]
 extern crate darling;
 extern crate syn;
 
 #[derive(Default, FromMeta)]
@@ -95,8 +105,9 @@ Darling's features are built to work wel
 
 * **Defaults**: Supports struct- and field-level defaults, using the same path syntax as `serde`.
 * **Field Renaming**: Fields can have different names in usage vs. the backing code.
 * **Auto-populated fields**: Structs deriving `FromDeriveInput` and `FromField` can declare properties named `ident`, `vis`, `ty`, `attrs`, and `generics` to automatically get copies of the matching values from the input AST. `FromDeriveInput` additionally exposes `data` to get access to the body of the deriving type, and `FromVariant` exposes `fields`.
 * **Mapping function**: Use `#[darling(map="path")]` to specify a function that runs on the result of parsing a meta-item field. This can change the return type, which enables you to parse to an intermediate form and convert that to the type you need in your struct.
 * **Skip fields**: Use `#[darling(skip)]` to mark a field that shouldn't be read from attribute meta-items.
 * **Multiple-occurrence fields**: Use `#[darling(multiple)]` on a `Vec` field to allow that field to appear multiple times in the meta-item. Each occurrence will be pushed into the `Vec`.
 * **Span access**: Use `darling::util::SpannedValue` in a struct to get access to that meta item's source code span. This can be used to emit warnings that point at a specific field from your proc macro. In addition, you can use `darling::Error::write_errors` to automatically get precise error location details in most cases.
+* **"Did you mean" suggestions**: Compile errors from derived darling trait impls include suggestions for misspelled fields.
\ No newline at end of file
--- a/third_party/rust/darling/tests/supports.rs
+++ b/third_party/rust/darling/tests/supports.rs
@@ -23,17 +23,17 @@ pub struct Variant {
 
 #[derive(Debug, FromDeriveInput)]
 #[darling(attributes(from_struct), supports(struct_named))]
 pub struct StructContainer {
     data: ast::Data<(), syn::Field>,
 }
 
 mod source {
-    use syn::{self, DeriveInput};
+    use syn::DeriveInput;
 
     pub fn newtype_enum() -> DeriveInput {
         parse_quote!{
             enum Hello {
                 World(bool),
                 String(String),
             }
         }
--- a/third_party/rust/darling_core/.cargo-checksum.json
+++ b/third_party/rust/darling_core/.cargo-checksum.json
@@ -1,1 +1,1 @@
-{"files":{"Cargo.toml":"1b000960f407d3a318f55d3dd742f2ca5ddb7f7b3b1cb370023970bdc3072e64","LICENSE":"8ea93490d74a5a1b1af3ff71d786271b3f1e5f0bea79ac16e02ec533cef040d6","src/ast/data.rs":"560a0b89a93b7839317abb2e7e3bc0af93f40ce476c4a8a706ae0ad0fd240bb8","src/ast/generics.rs":"3bdfe1abdbee64f5aaa9b189dc5c58e222568f196ed206e9d6d91ea5f29673e7","src/ast/mod.rs":"58a58eeb1db7682e5994732cc8eb04088f6ca662805460ef443cf089e5c24e2c","src/codegen/attr_extractor.rs":"439950febbf04b139b578eb75ad70e1529a2bd6e5480f936e08770e9e354d9ac","src/codegen/default_expr.rs":"60f23b77ddf80da70ec92fd0d8cb5a97143535df85eafa0e47943ac797ec46d2","src/codegen/error.rs":"1a415136f93adde7458e39cab91413adc9a64243b718c7b74fdeba748959b5af","src/codegen/field.rs":"82104df8f3e733b23764fd6683e60d24ce62912b8b29a22dadbbc55d6a42f158","src/codegen/from_derive_impl.rs":"2a1e331d205db9334218b800760afcb64539fa2b25b0b2b014586b49b5b25882","src/codegen/from_field.rs":"af6f848ed7c6d2274e15d6307b011a1b8bcba66172ef68b0e665c9b4ae85157d","src/codegen/from_meta_impl.rs":"f769e1288aaa218303c987a2fba9286b93a104106fba63277e134ce19cd1047c","src/codegen/from_type_param.rs":"48493227f4a81fe1a533bd958b89207d56b1c70f754a2a28fb0e9eb9114a9aeb","src/codegen/from_variant_impl.rs":"3d9b10d60e3eb969946bbd210ce93a43375b9c8d3ffa827c7e87ab9235e2c3f3","src/codegen/mod.rs":"2dc3ee7f18177b2ef9c27c4f0cabc5bbd49f970abdba28a0539d81c70d81b6e2","src/codegen/outer_from_impl.rs":"9a91e67986787df1e0249559dd287e87b6fbfd757bd5f2632f43777b14a7d690","src/codegen/trait_impl.rs":"48080df3d025be7782604e883c46d53bcd62ea301dac379a36b27ce7e270e56c","src/codegen/variant.rs":"69ee861a63e31feb158611e93d0a355fdd94d6c8f3adc6c550864b7f5906d0ba","src/codegen/variant_data.rs":"2baa4328f01f6cdff008538a1492eb9fb5af2a88883a816ae6da7db3dc67b39e","src/derive.rs":"89180c13798b61510a6d266781e065114b75ca0be27e172a24656347b9baf1d3","src/error/kind.rs":"877f025ff72839ede46b8c7460331dac32ec56a7539816820179110381f8d0fb","src/error/mod.rs":"9908925c5798d81f34961c17aef8838d0730d825105bb9a8fa95e3958f25eda5","src/from_derive_input.rs":"b2a04fefa4e14684061c819387ea0384297c67c7f50d5d0959aa69ab19075e76","src/from_field.rs":"f667924422ab4ab8d8b16ebfd42f61e74864cfaa80e96b49de5d1e1287e3d1d3","src/from_generic_param.rs":"49c5a8335eb0a9010998c5600c95c89440f7febe03265afb625d818dbc883d92","src/from_generics.rs":"7285b0fd213507e87c1da413cd1bc9eeada485d4a8f9d19630848d02a4d41c4a","src/from_meta.rs":"d3847786280239d5e4260e2b88cb9986cb6feaaa1d3a2e2fb0678956eb936363","src/from_type_param.rs":"9b611f276871002ade78146266fde3b6f9101b360082681a2fa2dafc16431f84","src/from_variant.rs":"70a23b5b4cb93c7e5a498fe9d16420b9b93bd69c1376d7703bc7cefd9417d159","src/lib.rs":"ff9d4957c48641e9a63f18fe83d1153ea01994ebad93d1d905cc76d5fa58d3c9","src/macros_private.rs":"ef249cd9ca593aac423b4242df1c39c31610438da094c21562d74a7e5823c700","src/macros_public.rs":"3ed7eb99f309d9cd600d3a09ff4dcf5cc5d787fb49e8e5ead6bb00e31e5e6793","src/options/core.rs":"925a95513f7a6b9121f63998b1195f52f3bb9d76341ffa7544520443c77d9fe4","src/options/forward_attrs.rs":"89d8294a2204d6c32e5f58b797c23f4b035a8ff424bcf1b1c7db973ada89a4bc","src/options/from_derive.rs":"a53c5c991b5e25fdff47e9cb3f3f5aa48020e931546e7851bbd0711f98e9084c","src/options/from_field.rs":"67f338df3ffc270b3baf08b35cbe985802a65c1360c4e540cc5b937f6f08f915","src/options/from_meta.rs":"81a2ae765d390f64fbcbb1d30d40e895d77f8cd4f4c5f7167b1eacb48e066195","src/options/from_type_param.rs":"d3c8add6c8f5f7ee3d4a487c53e1f85002a2da43b943c03d4ce856fa6e7c8453","src/options/from_variant.rs":"84bd6294ebefe128c755f4cce1ef10117535435d4a2f631125b8d59170677cb4","src/options/input_field.rs":"094ef2865bbfba00e6894463f3440f523c3d1c53f938a414b23f9c78f7b1e01d","src/options/input_variant.rs":"6760a47a1d415b29c54202255a3937dd743e9e247cd8fe31767124b8b01d06db","src/options/mod.rs":"8fe5c94c3999d210cb024c6f6b181da92a0cc1a4a862e5d46ec49904c6692e11","src/options/outer_from.rs":"e60196f2b9ea3ae014eaf3444607c6cf2a227c8d8aa4a5d64f59454602a0a5e6","src/options/shape.rs":"c177cabcbee698351af6f7f3f9e848381197e041ed1628f0324e5cf52fd218f5","src/usage/generics_ext.rs":"340774fe43033680e6b494c76dd4f558ada7ca4f09e91f9e4d076f125a729fc2","src/usage/ident_set.rs":"30edb2f0a599284967e3c6b579da31e5f9b15f3dd67bc9a82d6335eb44133df0","src/usage/lifetimes.rs":"6ac25eb43b291414c274785d26912b0213e0b1d0d29d722cd4ffd915d4a58709","src/usage/mod.rs":"bcf0ffb2257aed3b7b2cdad91c0136743384f39ff8f61f25c195c73b8fcdf144","src/usage/options.rs":"0491c995aad0d55783b24cce8a4e40f0f4435988c54ce2ded34763ac9b199fcf","src/usage/type_params.rs":"0f4376ee9322d2c319ae15f41223595c72cb8a453a097879c2a0ee7f602c2f8c","src/util/ident_list.rs":"ea5f0419d7cb7fe6eb517ed2d3d2e0b00e1c7203be690157641f451a772355f1","src/util/ident_string.rs":"2b7fdbe9664c2e306114ffa830fde9710d849a0240029636cbb244457795b13f","src/util/ignored.rs":"7c979fbef880498ff64efda7396e759d80bf77fb1c7df0313bed8e533a16c0e0","src/util/mod.rs":"32b6df88e22444e44662ad745bb199df22964795194d2860c67c8b91a9a61a06","src/util/over_ride.rs":"e90b3aeb41dd3364753f3ee6f8c6bbd85bf51d51569bf048396ec6e7735c569f","src/util/spanned_value.rs":"3938cfc5169237cde1f19d65b653e1da8699663d1abfcf005359d48bbcee7d0b","src/util/with_original.rs":"a545b38ba9d624fdc939eb844f001b7fc4102717b1d3683b4cbd0aae00fa7ef2"},"package":"d2a368589465391e127e10c9e3a08efc8df66fd49b87dc8524c764bbe7f2ef82"}
\ No newline at end of file
+{"files":{"Cargo.toml":"a1719da826076d2895c20ded33666c57b8f1f6bdce5e1230cf62a950057fe891","LICENSE":"8ea93490d74a5a1b1af3ff71d786271b3f1e5f0bea79ac16e02ec533cef040d6","src/ast/data.rs":"73a6b7a679011135dfee25af462163b3fe3f3effdf028c440aa6e3e4b5ff079f","src/ast/generics.rs":"3bdfe1abdbee64f5aaa9b189dc5c58e222568f196ed206e9d6d91ea5f29673e7","src/ast/mod.rs":"58a58eeb1db7682e5994732cc8eb04088f6ca662805460ef443cf089e5c24e2c","src/codegen/attr_extractor.rs":"439950febbf04b139b578eb75ad70e1529a2bd6e5480f936e08770e9e354d9ac","src/codegen/default_expr.rs":"60f23b77ddf80da70ec92fd0d8cb5a97143535df85eafa0e47943ac797ec46d2","src/codegen/error.rs":"1a415136f93adde7458e39cab91413adc9a64243b718c7b74fdeba748959b5af","src/codegen/field.rs":"82104df8f3e733b23764fd6683e60d24ce62912b8b29a22dadbbc55d6a42f158","src/codegen/from_derive_impl.rs":"2a1e331d205db9334218b800760afcb64539fa2b25b0b2b014586b49b5b25882","src/codegen/from_field.rs":"af6f848ed7c6d2274e15d6307b011a1b8bcba66172ef68b0e665c9b4ae85157d","src/codegen/from_meta_impl.rs":"f769e1288aaa218303c987a2fba9286b93a104106fba63277e134ce19cd1047c","src/codegen/from_type_param.rs":"48493227f4a81fe1a533bd958b89207d56b1c70f754a2a28fb0e9eb9114a9aeb","src/codegen/from_variant_impl.rs":"3d9b10d60e3eb969946bbd210ce93a43375b9c8d3ffa827c7e87ab9235e2c3f3","src/codegen/mod.rs":"2dc3ee7f18177b2ef9c27c4f0cabc5bbd49f970abdba28a0539d81c70d81b6e2","src/codegen/outer_from_impl.rs":"9a91e67986787df1e0249559dd287e87b6fbfd757bd5f2632f43777b14a7d690","src/codegen/trait_impl.rs":"94c6f8a190ab2957ddae55745184e056ec5e43e9c552f492a3cb2f387dfb4a6a","src/codegen/variant.rs":"69ee861a63e31feb158611e93d0a355fdd94d6c8f3adc6c550864b7f5906d0ba","src/codegen/variant_data.rs":"2baa4328f01f6cdff008538a1492eb9fb5af2a88883a816ae6da7db3dc67b39e","src/derive.rs":"89180c13798b61510a6d266781e065114b75ca0be27e172a24656347b9baf1d3","src/error/kind.rs":"877f025ff72839ede46b8c7460331dac32ec56a7539816820179110381f8d0fb","src/error/mod.rs":"8cc8b1fe44e775fc6a26b4f83711cd89ac31ba2673889f6ca7090b29365e1f1f","src/from_derive_input.rs":"b2a04fefa4e14684061c819387ea0384297c67c7f50d5d0959aa69ab19075e76","src/from_field.rs":"f667924422ab4ab8d8b16ebfd42f61e74864cfaa80e96b49de5d1e1287e3d1d3","src/from_generic_param.rs":"49c5a8335eb0a9010998c5600c95c89440f7febe03265afb625d818dbc883d92","src/from_generics.rs":"7285b0fd213507e87c1da413cd1bc9eeada485d4a8f9d19630848d02a4d41c4a","src/from_meta.rs":"d3847786280239d5e4260e2b88cb9986cb6feaaa1d3a2e2fb0678956eb936363","src/from_type_param.rs":"9b611f276871002ade78146266fde3b6f9101b360082681a2fa2dafc16431f84","src/from_variant.rs":"70a23b5b4cb93c7e5a498fe9d16420b9b93bd69c1376d7703bc7cefd9417d159","src/lib.rs":"337ce983fd49548c60bc0d8662f6d279daec1964c79b123453340158d55d39ab","src/macros_private.rs":"ef249cd9ca593aac423b4242df1c39c31610438da094c21562d74a7e5823c700","src/macros_public.rs":"3ed7eb99f309d9cd600d3a09ff4dcf5cc5d787fb49e8e5ead6bb00e31e5e6793","src/options/core.rs":"925a95513f7a6b9121f63998b1195f52f3bb9d76341ffa7544520443c77d9fe4","src/options/forward_attrs.rs":"89d8294a2204d6c32e5f58b797c23f4b035a8ff424bcf1b1c7db973ada89a4bc","src/options/from_derive.rs":"a53c5c991b5e25fdff47e9cb3f3f5aa48020e931546e7851bbd0711f98e9084c","src/options/from_field.rs":"67f338df3ffc270b3baf08b35cbe985802a65c1360c4e540cc5b937f6f08f915","src/options/from_meta.rs":"81a2ae765d390f64fbcbb1d30d40e895d77f8cd4f4c5f7167b1eacb48e066195","src/options/from_type_param.rs":"d3c8add6c8f5f7ee3d4a487c53e1f85002a2da43b943c03d4ce856fa6e7c8453","src/options/from_variant.rs":"84bd6294ebefe128c755f4cce1ef10117535435d4a2f631125b8d59170677cb4","src/options/input_field.rs":"094ef2865bbfba00e6894463f3440f523c3d1c53f938a414b23f9c78f7b1e01d","src/options/input_variant.rs":"6760a47a1d415b29c54202255a3937dd743e9e247cd8fe31767124b8b01d06db","src/options/mod.rs":"8fe5c94c3999d210cb024c6f6b181da92a0cc1a4a862e5d46ec49904c6692e11","src/options/outer_from.rs":"e60196f2b9ea3ae014eaf3444607c6cf2a227c8d8aa4a5d64f59454602a0a5e6","src/options/shape.rs":"313f2da39554e39c4a937065703f69bdfaaf3e06b259a13b24c2129da2e52188","src/usage/generics_ext.rs":"340774fe43033680e6b494c76dd4f558ada7ca4f09e91f9e4d076f125a729fc2","src/usage/ident_set.rs":"30edb2f0a599284967e3c6b579da31e5f9b15f3dd67bc9a82d6335eb44133df0","src/usage/lifetimes.rs":"6ac25eb43b291414c274785d26912b0213e0b1d0d29d722cd4ffd915d4a58709","src/usage/mod.rs":"e49adadfa8ffed27299d5bbf3c33e68e2c8c7411f89aef655f77e158be9dd642","src/usage/options.rs":"0491c995aad0d55783b24cce8a4e40f0f4435988c54ce2ded34763ac9b199fcf","src/usage/type_params.rs":"0f4376ee9322d2c319ae15f41223595c72cb8a453a097879c2a0ee7f602c2f8c","src/util/ident_list.rs":"4107c390f43e79cca899610a47e339a80390e53b127cb5df6950d1528e0bc4ed","src/util/ident_string.rs":"2b7fdbe9664c2e306114ffa830fde9710d849a0240029636cbb244457795b13f","src/util/ignored.rs":"7c979fbef880498ff64efda7396e759d80bf77fb1c7df0313bed8e533a16c0e0","src/util/mod.rs":"32b6df88e22444e44662ad745bb199df22964795194d2860c67c8b91a9a61a06","src/util/over_ride.rs":"5750d284d46c6a51522e908b642c8f09cd6e48c91fd25077f24ce75989525560","src/util/spanned_value.rs":"3938cfc5169237cde1f19d65b653e1da8699663d1abfcf005359d48bbcee7d0b","src/util/with_original.rs":"a545b38ba9d624fdc939eb844f001b7fc4102717b1d3683b4cbd0aae00fa7ef2"},"package":"6afc018370c3bff3eb51f89256a6bdb18b4fdcda72d577982a14954a7a0b402c"}
\ No newline at end of file
--- a/third_party/rust/darling_core/Cargo.toml
+++ b/third_party/rust/darling_core/Cargo.toml
@@ -7,17 +7,17 @@
 #
 # If you believe there's an error in this file please file an
 # issue against the rust-lang/cargo repository. If you're
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
 [package]
 name = "darling_core"
-version = "0.8.6"
+version = "0.9.0"
 authors = ["Ted Driggs <ted.driggs@outlook.com>"]
 description = "Helper crate for proc-macro library for reading attributes into structs when\nimplementing custom derives. Use https://crates.io/crates/darling in your code.\n"
 license = "MIT"
 repository = "https://github.com/TedDriggs/darling"
 [dependencies.fnv]
 version = "1.0.6"
 
 [dependencies.ident_case]
@@ -25,19 +25,18 @@ version = "1.0.0"
 
 [dependencies.proc-macro2]
 version = "0.4.26"
 
 [dependencies.quote]
 version = "0.6"
 
 [dependencies.strsim]
-version = "0.8.0"
+version = "0.7.0"
 optional = true
 
 [dependencies.syn]
 version = "0.15.26"
-features = ["extra-traits"]
+features = ["full", "extra-traits"]
 
 [features]
-default = ["syn/full"]
 diagnostics = []
 suggestions = ["strsim"]
--- a/third_party/rust/darling_core/src/ast/data.rs
+++ b/third_party/rust/darling_core/src/ast/data.rs
@@ -11,19 +11,16 @@ use {Error, FromField, FromVariant, Resu
 ///
 /// `V` is the type which receives any encountered variants, and `F` receives struct fields.
 #[derive(Debug, Clone, PartialEq, Eq)]
 pub enum Data<V, F> {
     Enum(Vec<V>),
     Struct(Fields<F>),
 }
 
-#[deprecated(since = "0.3.0", note = "this has been renamed to Data")]
-pub type Body<V, F> = Data<V, F>;
-
 impl<V, F> Data<V, F> {
     /// Creates an empty body of the same shape as the passed-in body.
     pub fn empty_from(src: &syn::Data) -> Self {
         match *src {
             syn::Data::Enum(_) => Data::Enum(vec![]),
             syn::Data::Struct(ref vd) => Data::Struct(Fields::empty_from(&vd.fields)),
             syn::Data::Union(_) => unreachable!(),
         }
@@ -154,19 +151,16 @@ impl<V: UsesLifetimes, F: UsesLifetimes>
 
 /// Equivalent to `syn::Fields`, but replaces the AST element with a generic.
 #[derive(Debug, Clone, PartialEq, Eq)]
 pub struct Fields<T> {
     pub style: Style,
     pub fields: Vec<T>,
 }
 
-#[deprecated(since = "0.3.0", note = "this has been renamed to Fields")]
-pub type VariantData<T> = Fields<T>;
-
 impl<T> Fields<T> {
     pub fn empty_from(vd: &syn::Fields) -> Self {
         Fields {
             style: vd.into(),
             fields: Vec::new(),
         }
     }
 
--- a/third_party/rust/darling_core/src/codegen/trait_impl.rs
+++ b/third_party/rust/darling_core/src/codegen/trait_impl.rs
@@ -22,26 +22,23 @@ impl<'a> TraitImpl<'a> {
     /// Get all declared type parameters.
     pub fn declared_type_params(&self) -> IdentSet {
         self.generics
             .type_params()
             .map(|tp| tp.ident.clone())
             .collect()
     }
 
-    /// Get the type parameters which are used by non-skipped fields.
+    /// Get the type parameters which are used by non-skipped, non-magic fields.
+    /// These type parameters will have a `FromMeta` bound applied to them in emitted
+    /// code.
     pub fn used_type_params(&self) -> IdentSet {
         self.type_params_matching(|f| !f.skip, |v| !v.skip)
     }
 
-    /// Get the type parameters which are used by skipped fields.
-    pub fn skipped_type_params(&self) -> IdentSet {
-        self.type_params_matching(|f| f.skip, |v| v.skip)
-    }
-
     fn type_params_matching<'b, F, V>(&'b self, field_filter: F, variant_filter: V) -> IdentSet
     where
         F: Fn(&&Field) -> bool,
         V: Fn(&&Variant) -> bool,
     {
         let declared = self.declared_type_params();
         match self.data {
             Data::Struct(ref v) => self.type_params_in_fields(v, &field_filter, &declared),
--- a/third_party/rust/darling_core/src/error/mod.rs
+++ b/third_party/rust/darling_core/src/error/mod.rs
@@ -105,17 +105,17 @@ impl Error {
     ///
     /// use darling::{FromMeta, Error, Result};
     /// use syn::{Lit, LitStr};
     ///
     /// pub struct Foo(String);
     ///
     /// impl FromMeta for Foo {
     ///     fn from_value(value: &Lit) -> Result<Self> {
-    ///         if let Lit::Str(ref lit_str) = value {
+    ///         if let Lit::Str(ref lit_str) = *value {
     ///             Ok(Foo(lit_str.value()))
     ///         } else {
     ///             Err(Error::unexpected_lit_type(value))
     ///         }
     ///     }
     /// }
     ///
     /// # fn main() {}
@@ -178,25 +178,16 @@ impl Error {
 
 /// Error instance methods
 impl Error {
     /// Check if this error is associated with a span in the token stream.
     pub fn has_span(&self) -> bool {
         self.span.is_some()
     }
 
-    /// Override the source code location of this error with a new one.
-    #[deprecated(
-        since = "0.8.3",
-        note = "Callers should not broaden error spans. Use with_span instead."
-    )]
-    pub fn set_span(&mut self, span: Span) {
-        self.span = Some(span)
-    }
-
     /// Tie a span to the error if none is already present. This is used in `darling::FromMeta`
     /// and other traits to attach errors to the most specific possible location in the input
     /// source code.
     ///
     /// All `darling`-built impls, either from the crate or from the proc macro, will call this
     /// when appropriate during parsing, so it should not be necessary to call this unless you have
     /// overridden:
     ///
--- a/third_party/rust/darling_core/src/lib.rs
+++ b/third_party/rust/darling_core/src/lib.rs
@@ -14,27 +14,27 @@ extern crate proc_macro2;
 extern crate strsim;
 
 #[macro_use]
 mod macros_private;
 #[macro_use]
 mod macros_public;
 
 pub mod ast;
-pub mod codegen;
+pub(crate) mod codegen;
 pub mod derive;
 pub mod error;
 mod from_derive_input;
 mod from_field;
 mod from_generic_param;
 mod from_generics;
 mod from_meta;
 mod from_type_param;
 mod from_variant;
-pub mod options;
+pub(crate) mod options;
 pub mod usage;
 pub mod util;
 
 pub use error::{Error, Result};
 pub use from_derive_input::FromDeriveInput;
 pub use from_field::FromField;
 pub use from_generic_param::FromGenericParam;
 pub use from_generics::FromGenerics;
--- a/third_party/rust/darling_core/src/options/shape.rs
+++ b/third_party/rust/darling_core/src/options/shape.rs
@@ -1,30 +1,36 @@
+//! Types for "shape" validation. This allows types deriving `FromDeriveInput` etc. to declare
+//! that they only work on - for example - structs with named fields, or newtype enum variants.
+
 use proc_macro2::TokenStream;
 use quote::{ToTokens, TokenStreamExt};
 use syn::{Meta, NestedMeta};
 
 use {Error, FromMeta, Result};
 
+/// Receiver struct for shape validation. Shape validation allows a deriving type
+/// to declare that it only accepts - for example - named structs, or newtype enum
+/// variants.
+///
+/// # Usage
+/// Because `Shape` implements `FromMeta`, the name of the field where it appears is
+/// controlled by the struct that declares `Shape` as a member. That field name is
+/// shown as `ignore` below.
+///
+/// ```rust,ignore
+/// #[ignore(any, struct_named, enum_newtype)]
+/// ```
 #[derive(Debug, Clone)]
 pub struct Shape {
     enum_values: DataShape,
     struct_values: DataShape,
     any: bool,
 }
 
-impl Shape {
-    pub fn all() -> Self {
-        Shape {
-            any: true,
-            ..Default::default()
-        }
-    }
-}
-
 impl Default for Shape {
     fn default() -> Self {
         Shape {
             enum_values: DataShape::new("enum_"),
             struct_values: DataShape::new("struct_"),
             any: Default::default(),
         }
     }
@@ -92,16 +98,18 @@ impl ToTokens for Shape {
             #[allow(unused_variables)]
             fn __validate_body(__body: &::syn::Data) -> ::darling::Result<()> {
                 #fn_body
             }
         });
     }
 }
 
+/// Receiver for shape information within a struct or enum context. See `Shape` for more information
+/// on valid uses of shape validation.
 #[derive(Debug, Clone, Default, PartialEq, Eq)]
 pub struct DataShape {
     /// The kind of shape being described. This can be `struct_` or `enum_`.
     prefix: &'static str,
     newtype: bool,
     named: bool,
     tuple: bool,
     unit: bool,
--- a/third_party/rust/darling_core/src/usage/mod.rs
+++ b/third_party/rust/darling_core/src/usage/mod.rs
@@ -43,17 +43,17 @@
 //!             .filter(|field| field.vis == Visibility::Inherited)
 //!             .collect_lifetimes(&Purpose::BoundImpl.into(), &lifetimes);
 //!
 //!
 //!         ret_generics.params = ret_generics
 //!             .params
 //!             .into_iter()
 //!             .filter(|gp| {
-//!                 match gp {
+//!                 match *gp {
 //!                     GenericParam::Type(ref ty) => int_type_params.contains(&ty.ident),
 //!                     GenericParam::Lifetime(ref lt) => int_lifetimes.contains(&lt.lifetime),
 //!                     _ => true,
 //!                 }
 //!             })
 //!             .collect();
 //!     }
 //!
--- a/third_party/rust/darling_core/src/util/ident_list.rs
+++ b/third_party/rust/darling_core/src/util/ident_list.rs
@@ -59,21 +59,22 @@ impl FromMeta for IdentList {
         Ok(IdentList(idents))
     }
 }
 
 #[cfg(test)]
 mod tests {
     use super::IdentList;
     use proc_macro2::TokenStream;
+    use syn::{Attribute, Meta};
     use FromMeta;
 
     /// parse a string as a syn::Meta instance.
-    fn pm(tokens: TokenStream) -> ::std::result::Result<syn::Meta, String> {
-        let attribute: syn::Attribute = parse_quote!(#[#tokens]);
+    fn pm(tokens: TokenStream) -> ::std::result::Result<Meta, String> {
+        let attribute: Attribute = parse_quote!(#[#tokens]);
         attribute.interpret_meta().ok_or("Unable to parse".into())
     }
 
     fn fm<T: FromMeta>(tokens: TokenStream) -> T {
         FromMeta::from_meta(&pm(tokens).expect("Tests should pass well-formed input"))
             .expect("Tests should pass valid input")
     }
 
--- a/third_party/rust/darling_core/src/util/over_ride.rs
+++ b/third_party/rust/darling_core/src/util/over_ride.rs
@@ -54,17 +54,17 @@ impl<T> Override<T> {
             Inherit => Inherit,
             Explicit(ref val) => Explicit(val),
         }
     }
 
     /// Converts from `Override<T>` to `Override<&mut T>`.
     ///
     /// Produces a new `Override`, containing a mutable reference into the original.
-    pub fn as_mut<'a>(&'a mut self) -> Override<&'a T> {
+    pub fn as_mut<'a>(&'a mut self) -> Override<&'a mut T> {
         match *self {
             Inherit => Inherit,
             Explicit(ref mut val) => Explicit(val),
         }
     }
 
     /// Returns `true` if the override is an `Explicit` value.
     pub fn is_explicit(&self) -> bool {
--- a/third_party/rust/darling_macro/.cargo-checksum.json
+++ b/third_party/rust/darling_macro/.cargo-checksum.json
@@ -1,1 +1,1 @@
-{"files":{"Cargo.toml":"7f87d565ab1cb6661d23c51bca2b37b15f0f97456cdace142b54ef39f1f17d0a","LICENSE":"8ea93490d74a5a1b1af3ff71d786271b3f1e5f0bea79ac16e02ec533cef040d6","src/lib.rs":"88141a58dc13b9001a83ca7559b6213ab44641510b6d642a3280c244ad735cec"},"package":"244e8987bd4e174385240cde20a3657f607fb0797563c28255c353b5819a07b1"}
\ No newline at end of file
+{"files":{"Cargo.toml":"f404d08f7194d7db4bf4d7dc591c3b56d0e0cbb81d9c5f3c1d0a1da40a7df92e","LICENSE":"8ea93490d74a5a1b1af3ff71d786271b3f1e5f0bea79ac16e02ec533cef040d6","src/lib.rs":"88141a58dc13b9001a83ca7559b6213ab44641510b6d642a3280c244ad735cec"},"package":"c6d8dac1c6f1d29a41c4712b4400f878cb4fcc4c7628f298dd75038e024998d1"}
\ No newline at end of file
--- a/third_party/rust/darling_macro/Cargo.toml
+++ b/third_party/rust/darling_macro/Cargo.toml
@@ -7,24 +7,24 @@
 #
 # If you believe there's an error in this file please file an
 # issue against the rust-lang/cargo repository. If you're
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
 [package]
 name = "darling_macro"
-version = "0.8.6"
+version = "0.9.0"
 authors = ["Ted Driggs <ted.driggs@outlook.com>"]
 description = "Internal support for a proc-macro library for reading attributes into structs when\nimplementing custom derives. Use https://crates.io/crates/darling in your code.\n"
 license = "MIT"
 repository = "https://github.com/TedDriggs/darling"
 
 [lib]
 proc-macro = true
 [dependencies.darling_core]
-version = "=0.8.6"
+version = "=0.9.0"
 
 [dependencies.quote]
 version = "0.6"
 
 [dependencies.syn]
 version = "0.15.26"