trybuild_internals_api/
dependencies.rs

1use crate::directory::Directory;
2use crate::error::Error;
3use crate::inherit::InheritEdition;
4use crate::manifest::Edition;
5use serde::de::value::MapAccessDeserializer;
6use serde::de::value::StrDeserializer;
7use serde::de::{self, Deserialize, Deserializer, Visitor};
8use serde::ser::{Serialize, Serializer};
9use serde_derive::{Deserialize, Serialize};
10use serde_json::Value;
11use std::collections::BTreeMap as Map;
12use std::fmt;
13use std::fs;
14use std::path::PathBuf;
15
16pub fn get_manifest(manifest_dir: &Directory) -> Result<Manifest, Error> {
17    let cargo_toml_path = manifest_dir.join("Cargo.toml");
18    let mut manifest = (|| {
19        let manifest_str = fs::read_to_string(&cargo_toml_path)?;
20        let manifest: Manifest = toml::from_str(&manifest_str)?;
21        Ok(manifest)
22    })()
23    .map_err(|err| Error::GetManifest(cargo_toml_path, Box::new(err)))?;
24
25    fix_dependencies(&mut manifest.dependencies, manifest_dir);
26    fix_dependencies(&mut manifest.dev_dependencies, manifest_dir);
27    for target in manifest.target.values_mut() {
28        fix_dependencies(&mut target.dependencies, manifest_dir);
29        fix_dependencies(&mut target.dev_dependencies, manifest_dir);
30    }
31
32    Ok(manifest)
33}
34
35pub fn get_workspace_manifest(manifest_dir: &Directory) -> WorkspaceManifest {
36    try_get_workspace_manifest(manifest_dir).unwrap_or_default()
37}
38
39pub fn try_get_workspace_manifest(
40    manifest_dir: &Directory,
41) -> Result<WorkspaceManifest, Error> {
42    let cargo_toml_path = manifest_dir.join("Cargo.toml");
43    let manifest_str = fs::read_to_string(cargo_toml_path)?;
44    let mut manifest: WorkspaceManifest = toml::from_str(&manifest_str)?;
45
46    fix_dependencies(&mut manifest.workspace.dependencies, manifest_dir);
47    fix_patches(&mut manifest.patch, manifest_dir);
48    fix_replacements(&mut manifest.replace, manifest_dir);
49
50    Ok(manifest)
51}
52
53fn fix_dependencies(dependencies: &mut Map<String, Dependency>, dir: &Directory) {
54    dependencies.remove("trybuild");
55    for dep in dependencies.values_mut() {
56        dep.path = dep.path.as_ref().map(|path| Directory::new(dir.join(path)));
57    }
58}
59
60fn fix_patches(patches: &mut Map<String, RegistryPatch>, dir: &Directory) {
61    for registry in patches.values_mut() {
62        registry.crates.remove("trybuild");
63        for patch in registry.crates.values_mut() {
64            patch.path = patch.path.as_ref().map(|path| dir.join(path));
65        }
66    }
67}
68
69fn fix_replacements(replacements: &mut Map<String, Patch>, dir: &Directory) {
70    replacements.remove("trybuild");
71    for replacement in replacements.values_mut() {
72        replacement.path = replacement.path.as_ref().map(|path| dir.join(path));
73    }
74}
75
76#[derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl<'de> _serde::Deserialize<'de> for WorkspaceManifest {
            fn deserialize<__D>(__deserializer: __D)
                -> _serde::__private228::Result<Self, __D::Error> where
                __D: _serde::Deserializer<'de> {
                #[allow(non_camel_case_types)]
                #[doc(hidden)]
                enum __Field {
                    __field0,
                    __field1,
                    __field2,
                    __field3,
                    __ignore,
                }
                #[doc(hidden)]
                struct __FieldVisitor;
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
                    type Value = __Field;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "field identifier")
                    }
                    fn visit_u64<__E>(self, __value: u64)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            0u64 => _serde::__private228::Ok(__Field::__field0),
                            1u64 => _serde::__private228::Ok(__Field::__field1),
                            2u64 => _serde::__private228::Ok(__Field::__field2),
                            3u64 => _serde::__private228::Ok(__Field::__field3),
                            _ => _serde::__private228::Ok(__Field::__ignore),
                        }
                    }
                    fn visit_str<__E>(self, __value: &str)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            "workspace" => _serde::__private228::Ok(__Field::__field0),
                            "patch" => _serde::__private228::Ok(__Field::__field1),
                            "replace" => _serde::__private228::Ok(__Field::__field2),
                            "profile" => _serde::__private228::Ok(__Field::__field3),
                            _ => { _serde::__private228::Ok(__Field::__ignore) }
                        }
                    }
                    fn visit_bytes<__E>(self, __value: &[u8])
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            b"workspace" => _serde::__private228::Ok(__Field::__field0),
                            b"patch" => _serde::__private228::Ok(__Field::__field1),
                            b"replace" => _serde::__private228::Ok(__Field::__field2),
                            b"profile" => _serde::__private228::Ok(__Field::__field3),
                            _ => { _serde::__private228::Ok(__Field::__ignore) }
                        }
                    }
                }
                #[automatically_derived]
                impl<'de> _serde::Deserialize<'de> for __Field {
                    #[inline]
                    fn deserialize<__D>(__deserializer: __D)
                        -> _serde::__private228::Result<Self, __D::Error> where
                        __D: _serde::Deserializer<'de> {
                        _serde::Deserializer::deserialize_identifier(__deserializer,
                            __FieldVisitor)
                    }
                }
                #[doc(hidden)]
                struct __Visitor<'de> {
                    marker: _serde::__private228::PhantomData<WorkspaceManifest>,
                    lifetime: _serde::__private228::PhantomData<&'de ()>,
                }
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                    type Value = WorkspaceManifest;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "struct WorkspaceManifest")
                    }
                    #[inline]
                    fn visit_seq<__A>(self, mut __seq: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::SeqAccess<'de> {
                        let __field0 =
                            match _serde::de::SeqAccess::next_element::<WorkspaceWorkspace>(&mut __seq)?
                                {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field1 =
                            match _serde::de::SeqAccess::next_element::<Map<String,
                                            RegistryPatch>>(&mut __seq)? {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field2 =
                            match _serde::de::SeqAccess::next_element::<Map<String,
                                            Patch>>(&mut __seq)? {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field3 =
                            match _serde::de::SeqAccess::next_element::<Map<String,
                                            Value>>(&mut __seq)? {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        _serde::__private228::Ok(WorkspaceManifest {
                                workspace: __field0,
                                patch: __field1,
                                replace: __field2,
                                profile: __field3,
                            })
                    }
                    #[inline]
                    fn visit_map<__A>(self, mut __map: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::MapAccess<'de> {
                        let mut __field0:
                                _serde::__private228::Option<WorkspaceWorkspace> =
                            _serde::__private228::None;
                        let mut __field1:
                                _serde::__private228::Option<Map<String, RegistryPatch>> =
                            _serde::__private228::None;
                        let mut __field2:
                                _serde::__private228::Option<Map<String, Patch>> =
                            _serde::__private228::None;
                        let mut __field3:
                                _serde::__private228::Option<Map<String, Value>> =
                            _serde::__private228::None;
                        while let _serde::__private228::Some(__key) =
                                _serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
                            match __key {
                                __Field::__field0 => {
                                    if _serde::__private228::Option::is_some(&__field0) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("workspace"));
                                    }
                                    __field0 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<WorkspaceWorkspace>(&mut __map)?);
                                }
                                __Field::__field1 => {
                                    if _serde::__private228::Option::is_some(&__field1) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("patch"));
                                    }
                                    __field1 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Map<String,
                                                        RegistryPatch>>(&mut __map)?);
                                }
                                __Field::__field2 => {
                                    if _serde::__private228::Option::is_some(&__field2) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("replace"));
                                    }
                                    __field2 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Map<String,
                                                        Patch>>(&mut __map)?);
                                }
                                __Field::__field3 => {
                                    if _serde::__private228::Option::is_some(&__field3) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("profile"));
                                    }
                                    __field3 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Map<String,
                                                        Value>>(&mut __map)?);
                                }
                                _ => {
                                    let _ =
                                        _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
                                }
                            }
                        }
                        let __field0 =
                            match __field0 {
                                _serde::__private228::Some(__field0) => __field0,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field1 =
                            match __field1 {
                                _serde::__private228::Some(__field1) => __field1,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field2 =
                            match __field2 {
                                _serde::__private228::Some(__field2) => __field2,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field3 =
                            match __field3 {
                                _serde::__private228::Some(__field3) => __field3,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        _serde::__private228::Ok(WorkspaceManifest {
                                workspace: __field0,
                                patch: __field1,
                                replace: __field2,
                                profile: __field3,
                            })
                    }
                }
                #[doc(hidden)]
                const FIELDS: &'static [&'static str] =
                    &["workspace", "patch", "replace", "profile"];
                _serde::Deserializer::deserialize_struct(__deserializer,
                    "WorkspaceManifest", FIELDS,
                    __Visitor {
                        marker: _serde::__private228::PhantomData::<WorkspaceManifest>,
                        lifetime: _serde::__private228::PhantomData,
                    })
            }
        }
    };Deserialize, #[automatically_derived]
impl ::core::default::Default for WorkspaceManifest {
    #[inline]
    fn default() -> WorkspaceManifest {
        WorkspaceManifest {
            workspace: ::core::default::Default::default(),
            patch: ::core::default::Default::default(),
            replace: ::core::default::Default::default(),
            profile: ::core::default::Default::default(),
        }
    }
}Default, #[automatically_derived]
impl ::core::fmt::Debug for WorkspaceManifest {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::debug_struct_field4_finish(f,
            "WorkspaceManifest", "workspace", &self.workspace, "patch",
            &self.patch, "replace", &self.replace, "profile", &&self.profile)
    }
}Debug)]
77pub struct WorkspaceManifest {
78    #[serde(default)]
79    pub workspace: WorkspaceWorkspace,
80    #[serde(default)]
81    pub patch: Map<String, RegistryPatch>,
82    #[serde(default)]
83    pub replace: Map<String, Patch>,
84    #[serde(default)]
85    pub profile: Map<String, Value>,
86}
87
88#[derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl<'de> _serde::Deserialize<'de> for WorkspaceWorkspace {
            fn deserialize<__D>(__deserializer: __D)
                -> _serde::__private228::Result<Self, __D::Error> where
                __D: _serde::Deserializer<'de> {
                #[allow(non_camel_case_types)]
                #[doc(hidden)]
                enum __Field { __field0, __field1, __ignore, }
                #[doc(hidden)]
                struct __FieldVisitor;
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
                    type Value = __Field;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "field identifier")
                    }
                    fn visit_u64<__E>(self, __value: u64)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            0u64 => _serde::__private228::Ok(__Field::__field0),
                            1u64 => _serde::__private228::Ok(__Field::__field1),
                            _ => _serde::__private228::Ok(__Field::__ignore),
                        }
                    }
                    fn visit_str<__E>(self, __value: &str)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            "package" => _serde::__private228::Ok(__Field::__field0),
                            "dependencies" =>
                                _serde::__private228::Ok(__Field::__field1),
                            _ => { _serde::__private228::Ok(__Field::__ignore) }
                        }
                    }
                    fn visit_bytes<__E>(self, __value: &[u8])
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            b"package" => _serde::__private228::Ok(__Field::__field0),
                            b"dependencies" =>
                                _serde::__private228::Ok(__Field::__field1),
                            _ => { _serde::__private228::Ok(__Field::__ignore) }
                        }
                    }
                }
                #[automatically_derived]
                impl<'de> _serde::Deserialize<'de> for __Field {
                    #[inline]
                    fn deserialize<__D>(__deserializer: __D)
                        -> _serde::__private228::Result<Self, __D::Error> where
                        __D: _serde::Deserializer<'de> {
                        _serde::Deserializer::deserialize_identifier(__deserializer,
                            __FieldVisitor)
                    }
                }
                #[doc(hidden)]
                struct __Visitor<'de> {
                    marker: _serde::__private228::PhantomData<WorkspaceWorkspace>,
                    lifetime: _serde::__private228::PhantomData<&'de ()>,
                }
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                    type Value = WorkspaceWorkspace;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "struct WorkspaceWorkspace")
                    }
                    #[inline]
                    fn visit_seq<__A>(self, mut __seq: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::SeqAccess<'de> {
                        let __field0 =
                            match _serde::de::SeqAccess::next_element::<WorkspacePackage>(&mut __seq)?
                                {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field1 =
                            match _serde::de::SeqAccess::next_element::<Map<String,
                                            Dependency>>(&mut __seq)? {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        _serde::__private228::Ok(WorkspaceWorkspace {
                                package: __field0,
                                dependencies: __field1,
                            })
                    }
                    #[inline]
                    fn visit_map<__A>(self, mut __map: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::MapAccess<'de> {
                        let mut __field0:
                                _serde::__private228::Option<WorkspacePackage> =
                            _serde::__private228::None;
                        let mut __field1:
                                _serde::__private228::Option<Map<String, Dependency>> =
                            _serde::__private228::None;
                        while let _serde::__private228::Some(__key) =
                                _serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
                            match __key {
                                __Field::__field0 => {
                                    if _serde::__private228::Option::is_some(&__field0) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("package"));
                                    }
                                    __field0 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<WorkspacePackage>(&mut __map)?);
                                }
                                __Field::__field1 => {
                                    if _serde::__private228::Option::is_some(&__field1) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("dependencies"));
                                    }
                                    __field1 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Map<String,
                                                        Dependency>>(&mut __map)?);
                                }
                                _ => {
                                    let _ =
                                        _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
                                }
                            }
                        }
                        let __field0 =
                            match __field0 {
                                _serde::__private228::Some(__field0) => __field0,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field1 =
                            match __field1 {
                                _serde::__private228::Some(__field1) => __field1,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        _serde::__private228::Ok(WorkspaceWorkspace {
                                package: __field0,
                                dependencies: __field1,
                            })
                    }
                }
                #[doc(hidden)]
                const FIELDS: &'static [&'static str] =
                    &["package", "dependencies"];
                _serde::Deserializer::deserialize_struct(__deserializer,
                    "WorkspaceWorkspace", FIELDS,
                    __Visitor {
                        marker: _serde::__private228::PhantomData::<WorkspaceWorkspace>,
                        lifetime: _serde::__private228::PhantomData,
                    })
            }
        }
    };Deserialize, #[automatically_derived]
impl ::core::default::Default for WorkspaceWorkspace {
    #[inline]
    fn default() -> WorkspaceWorkspace {
        WorkspaceWorkspace {
            package: ::core::default::Default::default(),
            dependencies: ::core::default::Default::default(),
        }
    }
}Default, #[automatically_derived]
impl ::core::fmt::Debug for WorkspaceWorkspace {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::debug_struct_field2_finish(f,
            "WorkspaceWorkspace", "package", &self.package, "dependencies",
            &&self.dependencies)
    }
}Debug)]
89pub struct WorkspaceWorkspace {
90    #[serde(default)]
91    pub package: WorkspacePackage,
92    #[serde(default)]
93    pub dependencies: Map<String, Dependency>,
94}
95
96#[derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl<'de> _serde::Deserialize<'de> for WorkspacePackage {
            fn deserialize<__D>(__deserializer: __D)
                -> _serde::__private228::Result<Self, __D::Error> where
                __D: _serde::Deserializer<'de> {
                #[allow(non_camel_case_types)]
                #[doc(hidden)]
                enum __Field { __field0, __ignore, }
                #[doc(hidden)]
                struct __FieldVisitor;
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
                    type Value = __Field;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "field identifier")
                    }
                    fn visit_u64<__E>(self, __value: u64)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            0u64 => _serde::__private228::Ok(__Field::__field0),
                            _ => _serde::__private228::Ok(__Field::__ignore),
                        }
                    }
                    fn visit_str<__E>(self, __value: &str)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            "edition" => _serde::__private228::Ok(__Field::__field0),
                            _ => { _serde::__private228::Ok(__Field::__ignore) }
                        }
                    }
                    fn visit_bytes<__E>(self, __value: &[u8])
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            b"edition" => _serde::__private228::Ok(__Field::__field0),
                            _ => { _serde::__private228::Ok(__Field::__ignore) }
                        }
                    }
                }
                #[automatically_derived]
                impl<'de> _serde::Deserialize<'de> for __Field {
                    #[inline]
                    fn deserialize<__D>(__deserializer: __D)
                        -> _serde::__private228::Result<Self, __D::Error> where
                        __D: _serde::Deserializer<'de> {
                        _serde::Deserializer::deserialize_identifier(__deserializer,
                            __FieldVisitor)
                    }
                }
                #[doc(hidden)]
                struct __Visitor<'de> {
                    marker: _serde::__private228::PhantomData<WorkspacePackage>,
                    lifetime: _serde::__private228::PhantomData<&'de ()>,
                }
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                    type Value = WorkspacePackage;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "struct WorkspacePackage")
                    }
                    #[inline]
                    fn visit_seq<__A>(self, mut __seq: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::SeqAccess<'de> {
                        let __field0 =
                            match _serde::de::SeqAccess::next_element::<Option<Edition>>(&mut __seq)?
                                {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
                                                &"struct WorkspacePackage with 1 element")),
                            };
                        _serde::__private228::Ok(WorkspacePackage {
                                edition: __field0,
                            })
                    }
                    #[inline]
                    fn visit_map<__A>(self, mut __map: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::MapAccess<'de> {
                        let mut __field0:
                                _serde::__private228::Option<Option<Edition>> =
                            _serde::__private228::None;
                        while let _serde::__private228::Some(__key) =
                                _serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
                            match __key {
                                __Field::__field0 => {
                                    if _serde::__private228::Option::is_some(&__field0) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("edition"));
                                    }
                                    __field0 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<Edition>>(&mut __map)?);
                                }
                                _ => {
                                    let _ =
                                        _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
                                }
                            }
                        }
                        let __field0 =
                            match __field0 {
                                _serde::__private228::Some(__field0) => __field0,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("edition")?,
                            };
                        _serde::__private228::Ok(WorkspacePackage {
                                edition: __field0,
                            })
                    }
                }
                #[doc(hidden)]
                const FIELDS: &'static [&'static str] = &["edition"];
                _serde::Deserializer::deserialize_struct(__deserializer,
                    "WorkspacePackage", FIELDS,
                    __Visitor {
                        marker: _serde::__private228::PhantomData::<WorkspacePackage>,
                        lifetime: _serde::__private228::PhantomData,
                    })
            }
        }
    };Deserialize, #[automatically_derived]
impl ::core::default::Default for WorkspacePackage {
    #[inline]
    fn default() -> WorkspacePackage {
        WorkspacePackage { edition: ::core::default::Default::default() }
    }
}Default, #[automatically_derived]
impl ::core::fmt::Debug for WorkspacePackage {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::debug_struct_field1_finish(f,
            "WorkspacePackage", "edition", &&self.edition)
    }
}Debug)]
97pub struct WorkspacePackage {
98    pub edition: Option<Edition>,
99}
100
101#[derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl<'de> _serde::Deserialize<'de> for Manifest {
            fn deserialize<__D>(__deserializer: __D)
                -> _serde::__private228::Result<Self, __D::Error> where
                __D: _serde::Deserializer<'de> {
                #[allow(non_camel_case_types)]
                #[doc(hidden)]
                enum __Field {
                    __field0,
                    __field1,
                    __field2,
                    __field3,
                    __field4,
                    __field5,
                    __ignore,
                }
                #[doc(hidden)]
                struct __FieldVisitor;
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
                    type Value = __Field;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "field identifier")
                    }
                    fn visit_u64<__E>(self, __value: u64)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            0u64 => _serde::__private228::Ok(__Field::__field0),
                            1u64 => _serde::__private228::Ok(__Field::__field1),
                            2u64 => _serde::__private228::Ok(__Field::__field2),
                            3u64 => _serde::__private228::Ok(__Field::__field3),
                            4u64 => _serde::__private228::Ok(__Field::__field4),
                            5u64 => _serde::__private228::Ok(__Field::__field5),
                            _ => _serde::__private228::Ok(__Field::__ignore),
                        }
                    }
                    fn visit_str<__E>(self, __value: &str)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            "cargo-features" =>
                                _serde::__private228::Ok(__Field::__field0),
                            "package" => _serde::__private228::Ok(__Field::__field1),
                            "features" => _serde::__private228::Ok(__Field::__field2),
                            "dependencies" =>
                                _serde::__private228::Ok(__Field::__field3),
                            "dev-dependencies" =>
                                _serde::__private228::Ok(__Field::__field4),
                            "dev_dependencies" =>
                                _serde::__private228::Ok(__Field::__field4),
                            "target" => _serde::__private228::Ok(__Field::__field5),
                            _ => { _serde::__private228::Ok(__Field::__ignore) }
                        }
                    }
                    fn visit_bytes<__E>(self, __value: &[u8])
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            b"cargo-features" =>
                                _serde::__private228::Ok(__Field::__field0),
                            b"package" => _serde::__private228::Ok(__Field::__field1),
                            b"features" => _serde::__private228::Ok(__Field::__field2),
                            b"dependencies" =>
                                _serde::__private228::Ok(__Field::__field3),
                            b"dev-dependencies" =>
                                _serde::__private228::Ok(__Field::__field4),
                            b"dev_dependencies" =>
                                _serde::__private228::Ok(__Field::__field4),
                            b"target" => _serde::__private228::Ok(__Field::__field5),
                            _ => { _serde::__private228::Ok(__Field::__ignore) }
                        }
                    }
                }
                #[automatically_derived]
                impl<'de> _serde::Deserialize<'de> for __Field {
                    #[inline]
                    fn deserialize<__D>(__deserializer: __D)
                        -> _serde::__private228::Result<Self, __D::Error> where
                        __D: _serde::Deserializer<'de> {
                        _serde::Deserializer::deserialize_identifier(__deserializer,
                            __FieldVisitor)
                    }
                }
                #[doc(hidden)]
                struct __Visitor<'de> {
                    marker: _serde::__private228::PhantomData<Manifest>,
                    lifetime: _serde::__private228::PhantomData<&'de ()>,
                }
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                    type Value = Manifest;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "struct Manifest")
                    }
                    #[inline]
                    fn visit_seq<__A>(self, mut __seq: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::SeqAccess<'de> {
                        let __field0 =
                            match _serde::de::SeqAccess::next_element::<Vec<String>>(&mut __seq)?
                                {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field1 =
                            match _serde::de::SeqAccess::next_element::<Package>(&mut __seq)?
                                {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field2 =
                            match _serde::de::SeqAccess::next_element::<Map<String,
                                            Vec<String>>>(&mut __seq)? {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field3 =
                            match _serde::de::SeqAccess::next_element::<Map<String,
                                            Dependency>>(&mut __seq)? {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field4 =
                            match _serde::de::SeqAccess::next_element::<Map<String,
                                            Dependency>>(&mut __seq)? {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field5 =
                            match _serde::de::SeqAccess::next_element::<Map<String,
                                            TargetDependencies>>(&mut __seq)? {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        _serde::__private228::Ok(Manifest {
                                cargo_features: __field0,
                                package: __field1,
                                features: __field2,
                                dependencies: __field3,
                                dev_dependencies: __field4,
                                target: __field5,
                            })
                    }
                    #[inline]
                    fn visit_map<__A>(self, mut __map: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::MapAccess<'de> {
                        let mut __field0:
                                _serde::__private228::Option<Vec<String>> =
                            _serde::__private228::None;
                        let mut __field1: _serde::__private228::Option<Package> =
                            _serde::__private228::None;
                        let mut __field2:
                                _serde::__private228::Option<Map<String, Vec<String>>> =
                            _serde::__private228::None;
                        let mut __field3:
                                _serde::__private228::Option<Map<String, Dependency>> =
                            _serde::__private228::None;
                        let mut __field4:
                                _serde::__private228::Option<Map<String, Dependency>> =
                            _serde::__private228::None;
                        let mut __field5:
                                _serde::__private228::Option<Map<String,
                                TargetDependencies>> = _serde::__private228::None;
                        while let _serde::__private228::Some(__key) =
                                _serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
                            match __key {
                                __Field::__field0 => {
                                    if _serde::__private228::Option::is_some(&__field0) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("cargo-features"));
                                    }
                                    __field0 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Vec<String>>(&mut __map)?);
                                }
                                __Field::__field1 => {
                                    if _serde::__private228::Option::is_some(&__field1) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("package"));
                                    }
                                    __field1 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Package>(&mut __map)?);
                                }
                                __Field::__field2 => {
                                    if _serde::__private228::Option::is_some(&__field2) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("features"));
                                    }
                                    __field2 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Map<String,
                                                        Vec<String>>>(&mut __map)?);
                                }
                                __Field::__field3 => {
                                    if _serde::__private228::Option::is_some(&__field3) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("dependencies"));
                                    }
                                    __field3 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Map<String,
                                                        Dependency>>(&mut __map)?);
                                }
                                __Field::__field4 => {
                                    if _serde::__private228::Option::is_some(&__field4) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("dev_dependencies"));
                                    }
                                    __field4 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Map<String,
                                                        Dependency>>(&mut __map)?);
                                }
                                __Field::__field5 => {
                                    if _serde::__private228::Option::is_some(&__field5) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("target"));
                                    }
                                    __field5 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Map<String,
                                                        TargetDependencies>>(&mut __map)?);
                                }
                                _ => {
                                    let _ =
                                        _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
                                }
                            }
                        }
                        let __field0 =
                            match __field0 {
                                _serde::__private228::Some(__field0) => __field0,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field1 =
                            match __field1 {
                                _serde::__private228::Some(__field1) => __field1,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field2 =
                            match __field2 {
                                _serde::__private228::Some(__field2) => __field2,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field3 =
                            match __field3 {
                                _serde::__private228::Some(__field3) => __field3,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field4 =
                            match __field4 {
                                _serde::__private228::Some(__field4) => __field4,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field5 =
                            match __field5 {
                                _serde::__private228::Some(__field5) => __field5,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        _serde::__private228::Ok(Manifest {
                                cargo_features: __field0,
                                package: __field1,
                                features: __field2,
                                dependencies: __field3,
                                dev_dependencies: __field4,
                                target: __field5,
                            })
                    }
                }
                #[doc(hidden)]
                const FIELDS: &'static [&'static str] =
                    &["cargo-features", "package", "features", "dependencies",
                                "dev-dependencies", "dev_dependencies", "target"];
                _serde::Deserializer::deserialize_struct(__deserializer,
                    "Manifest", FIELDS,
                    __Visitor {
                        marker: _serde::__private228::PhantomData::<Manifest>,
                        lifetime: _serde::__private228::PhantomData,
                    })
            }
        }
    };Deserialize, #[automatically_derived]
impl ::core::default::Default for Manifest {
    #[inline]
    fn default() -> Manifest {
        Manifest {
            cargo_features: ::core::default::Default::default(),
            package: ::core::default::Default::default(),
            features: ::core::default::Default::default(),
            dependencies: ::core::default::Default::default(),
            dev_dependencies: ::core::default::Default::default(),
            target: ::core::default::Default::default(),
        }
    }
}Default, #[automatically_derived]
impl ::core::fmt::Debug for Manifest {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        let names: &'static _ =
            &["cargo_features", "package", "features", "dependencies",
                        "dev_dependencies", "target"];
        let values: &[&dyn ::core::fmt::Debug] =
            &[&self.cargo_features, &self.package, &self.features,
                        &self.dependencies, &self.dev_dependencies, &&self.target];
        ::core::fmt::Formatter::debug_struct_fields_finish(f, "Manifest",
            names, values)
    }
}Debug)]
102pub struct Manifest {
103    #[serde(rename = "cargo-features", default)]
104    pub cargo_features: Vec<String>,
105    #[serde(default)]
106    pub package: Package,
107    #[serde(default)]
108    pub features: Map<String, Vec<String>>,
109    #[serde(default)]
110    pub dependencies: Map<String, Dependency>,
111    #[serde(default, alias = "dev-dependencies")]
112    pub dev_dependencies: Map<String, Dependency>,
113    #[serde(default)]
114    pub target: Map<String, TargetDependencies>,
115}
116
117#[derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl<'de> _serde::Deserialize<'de> for Package {
            fn deserialize<__D>(__deserializer: __D)
                -> _serde::__private228::Result<Self, __D::Error> where
                __D: _serde::Deserializer<'de> {
                #[allow(non_camel_case_types)]
                #[doc(hidden)]
                enum __Field { __field0, __field1, __field2, __ignore, }
                #[doc(hidden)]
                struct __FieldVisitor;
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
                    type Value = __Field;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "field identifier")
                    }
                    fn visit_u64<__E>(self, __value: u64)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            0u64 => _serde::__private228::Ok(__Field::__field0),
                            1u64 => _serde::__private228::Ok(__Field::__field1),
                            2u64 => _serde::__private228::Ok(__Field::__field2),
                            _ => _serde::__private228::Ok(__Field::__ignore),
                        }
                    }
                    fn visit_str<__E>(self, __value: &str)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            "name" => _serde::__private228::Ok(__Field::__field0),
                            "edition" => _serde::__private228::Ok(__Field::__field1),
                            "resolver" => _serde::__private228::Ok(__Field::__field2),
                            _ => { _serde::__private228::Ok(__Field::__ignore) }
                        }
                    }
                    fn visit_bytes<__E>(self, __value: &[u8])
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            b"name" => _serde::__private228::Ok(__Field::__field0),
                            b"edition" => _serde::__private228::Ok(__Field::__field1),
                            b"resolver" => _serde::__private228::Ok(__Field::__field2),
                            _ => { _serde::__private228::Ok(__Field::__ignore) }
                        }
                    }
                }
                #[automatically_derived]
                impl<'de> _serde::Deserialize<'de> for __Field {
                    #[inline]
                    fn deserialize<__D>(__deserializer: __D)
                        -> _serde::__private228::Result<Self, __D::Error> where
                        __D: _serde::Deserializer<'de> {
                        _serde::Deserializer::deserialize_identifier(__deserializer,
                            __FieldVisitor)
                    }
                }
                #[doc(hidden)]
                struct __Visitor<'de> {
                    marker: _serde::__private228::PhantomData<Package>,
                    lifetime: _serde::__private228::PhantomData<&'de ()>,
                }
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                    type Value = Package;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "struct Package")
                    }
                    #[inline]
                    fn visit_seq<__A>(self, mut __seq: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::SeqAccess<'de> {
                        let __field0 =
                            match _serde::de::SeqAccess::next_element::<String>(&mut __seq)?
                                {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
                                                &"struct Package with 3 elements")),
                            };
                        let __field1 =
                            match _serde::de::SeqAccess::next_element::<EditionOrInherit>(&mut __seq)?
                                {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field2 =
                            match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)?
                                {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    return _serde::__private228::Err(_serde::de::Error::invalid_length(2usize,
                                                &"struct Package with 3 elements")),
                            };
                        _serde::__private228::Ok(Package {
                                name: __field0,
                                edition: __field1,
                                resolver: __field2,
                            })
                    }
                    #[inline]
                    fn visit_map<__A>(self, mut __map: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::MapAccess<'de> {
                        let mut __field0: _serde::__private228::Option<String> =
                            _serde::__private228::None;
                        let mut __field1:
                                _serde::__private228::Option<EditionOrInherit> =
                            _serde::__private228::None;
                        let mut __field2:
                                _serde::__private228::Option<Option<String>> =
                            _serde::__private228::None;
                        while let _serde::__private228::Some(__key) =
                                _serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
                            match __key {
                                __Field::__field0 => {
                                    if _serde::__private228::Option::is_some(&__field0) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("name"));
                                    }
                                    __field0 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<String>(&mut __map)?);
                                }
                                __Field::__field1 => {
                                    if _serde::__private228::Option::is_some(&__field1) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("edition"));
                                    }
                                    __field1 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<EditionOrInherit>(&mut __map)?);
                                }
                                __Field::__field2 => {
                                    if _serde::__private228::Option::is_some(&__field2) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("resolver"));
                                    }
                                    __field2 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<String>>(&mut __map)?);
                                }
                                _ => {
                                    let _ =
                                        _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
                                }
                            }
                        }
                        let __field0 =
                            match __field0 {
                                _serde::__private228::Some(__field0) => __field0,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("name")?,
                            };
                        let __field1 =
                            match __field1 {
                                _serde::__private228::Some(__field1) => __field1,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field2 =
                            match __field2 {
                                _serde::__private228::Some(__field2) => __field2,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("resolver")?,
                            };
                        _serde::__private228::Ok(Package {
                                name: __field0,
                                edition: __field1,
                                resolver: __field2,
                            })
                    }
                }
                #[doc(hidden)]
                const FIELDS: &'static [&'static str] =
                    &["name", "edition", "resolver"];
                _serde::Deserializer::deserialize_struct(__deserializer,
                    "Package", FIELDS,
                    __Visitor {
                        marker: _serde::__private228::PhantomData::<Package>,
                        lifetime: _serde::__private228::PhantomData,
                    })
            }
        }
    };Deserialize, #[automatically_derived]
impl ::core::default::Default for Package {
    #[inline]
    fn default() -> Package {
        Package {
            name: ::core::default::Default::default(),
            edition: ::core::default::Default::default(),
            resolver: ::core::default::Default::default(),
        }
    }
}Default, #[automatically_derived]
impl ::core::fmt::Debug for Package {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::debug_struct_field3_finish(f, "Package",
            "name", &self.name, "edition", &self.edition, "resolver",
            &&self.resolver)
    }
}Debug)]
118pub struct Package {
119    pub name: String,
120    #[serde(default)]
121    pub edition: EditionOrInherit,
122    pub resolver: Option<String>,
123}
124
125#[derive(#[automatically_derived]
impl ::core::fmt::Debug for EditionOrInherit {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        match self {
            EditionOrInherit::Edition(__self_0) =>
                ::core::fmt::Formatter::debug_tuple_field1_finish(f,
                    "Edition", &__self_0),
            EditionOrInherit::Inherit =>
                ::core::fmt::Formatter::write_str(f, "Inherit"),
        }
    }
}Debug)]
126pub enum EditionOrInherit {
127    Edition(Edition),
128    Inherit,
129}
130
131#[derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl Dependency {
            pub fn serialize<__S>(__self: &Dependency, __serializer: __S)
                -> _serde::__private228::Result<__S::Ok, __S::Error> where
                __S: _serde::Serializer {
                match _serde::__private228::None::<&Dependency> {
                    _serde::__private228::Some(Dependency {
                        version: __v0,
                        path: __v1,
                        optional: __v2,
                        default_features: __v3,
                        features: __v4,
                        git: __v5,
                        branch: __v6,
                        tag: __v7,
                        rev: __v8,
                        workspace: __v9,
                        rest: __v10 }) => {}
                    _ => {}
                }
                let mut __serde_state =
                    _serde::Serializer::serialize_map(__serializer,
                            _serde::__private228::None)?;
                if !Option::is_none(_serde::__private228::ser::constrain::<Option<String>>(&__self.version))
                    {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "version",
                            _serde::__private228::ser::constrain::<Option<String>>(&__self.version))?;
                }
                if !Option::is_none(_serde::__private228::ser::constrain::<Option<Directory>>(&__self.path))
                    {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "path",
                            _serde::__private228::ser::constrain::<Option<Directory>>(&__self.path))?;
                }
                if !is_false(_serde::__private228::ser::constrain::<bool>(&__self.optional))
                    {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "optional",
                            _serde::__private228::ser::constrain::<bool>(&__self.optional))?;
                }
                if !Option::is_none(_serde::__private228::ser::constrain::<Option<bool>>(&__self.default_features))
                    {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "default-features",
                            _serde::__private228::ser::constrain::<Option<bool>>(&__self.default_features))?;
                }
                if !Vec::is_empty(_serde::__private228::ser::constrain::<Vec<String>>(&__self.features))
                    {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "features",
                            _serde::__private228::ser::constrain::<Vec<String>>(&__self.features))?;
                }
                if !Option::is_none(_serde::__private228::ser::constrain::<Option<String>>(&__self.git))
                    {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "git",
                            _serde::__private228::ser::constrain::<Option<String>>(&__self.git))?;
                }
                if !Option::is_none(_serde::__private228::ser::constrain::<Option<String>>(&__self.branch))
                    {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "branch",
                            _serde::__private228::ser::constrain::<Option<String>>(&__self.branch))?;
                }
                if !Option::is_none(_serde::__private228::ser::constrain::<Option<String>>(&__self.tag))
                    {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "tag",
                            _serde::__private228::ser::constrain::<Option<String>>(&__self.tag))?;
                }
                if !Option::is_none(_serde::__private228::ser::constrain::<Option<String>>(&__self.rev))
                    {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "rev",
                            _serde::__private228::ser::constrain::<Option<String>>(&__self.rev))?;
                }
                if !is_false(_serde::__private228::ser::constrain::<bool>(&__self.workspace))
                    {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "workspace",
                            _serde::__private228::ser::constrain::<bool>(&__self.workspace))?;
                }
                _serde::Serialize::serialize(&_serde::__private228::ser::constrain::<Map<String,
                                    Value>>(&__self.rest),
                        _serde::__private228::ser::FlatMapSerializer(&mut __serde_state))?;
                _serde::ser::SerializeMap::end(__serde_state)
            }
        }
    };Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl<'de> Dependency {
            pub fn deserialize<__D>(__deserializer: __D)
                -> _serde::__private228::Result<Dependency, __D::Error> where
                __D: _serde::Deserializer<'de> {
                match _serde::__private228::None::<&Dependency> {
                    _serde::__private228::Some(Dependency {
                        version: __v0,
                        path: __v1,
                        optional: __v2,
                        default_features: __v3,
                        features: __v4,
                        git: __v5,
                        branch: __v6,
                        tag: __v7,
                        rev: __v8,
                        workspace: __v9,
                        rest: __v10 }) => {}
                    _ => {}
                }
                #[allow(non_camel_case_types)]
                #[doc(hidden)]
                enum __Field<'de> {
                    __field0,
                    __field1,
                    __field2,
                    __field3,
                    __field4,
                    __field5,
                    __field6,
                    __field7,
                    __field8,
                    __field9,
                    __other(_serde::__private228::de::Content<'de>),
                }
                #[doc(hidden)]
                struct __FieldVisitor;
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
                    type Value = __Field<'de>;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "field identifier")
                    }
                    fn visit_bool<__E>(self, __value: bool)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::Bool(__value)))
                    }
                    fn visit_i8<__E>(self, __value: i8)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::I8(__value)))
                    }
                    fn visit_i16<__E>(self, __value: i16)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::I16(__value)))
                    }
                    fn visit_i32<__E>(self, __value: i32)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::I32(__value)))
                    }
                    fn visit_i64<__E>(self, __value: i64)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::I64(__value)))
                    }
                    fn visit_u8<__E>(self, __value: u8)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::U8(__value)))
                    }
                    fn visit_u16<__E>(self, __value: u16)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::U16(__value)))
                    }
                    fn visit_u32<__E>(self, __value: u32)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::U32(__value)))
                    }
                    fn visit_u64<__E>(self, __value: u64)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::U64(__value)))
                    }
                    fn visit_f32<__E>(self, __value: f32)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::F32(__value)))
                    }
                    fn visit_f64<__E>(self, __value: f64)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::F64(__value)))
                    }
                    fn visit_char<__E>(self, __value: char)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::Char(__value)))
                    }
                    fn visit_unit<__E>(self)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::Unit))
                    }
                    fn visit_str<__E>(self, __value: &str)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            "version" => _serde::__private228::Ok(__Field::__field0),
                            "path" => _serde::__private228::Ok(__Field::__field1),
                            "optional" => _serde::__private228::Ok(__Field::__field2),
                            "default-features" =>
                                _serde::__private228::Ok(__Field::__field3),
                            "features" => _serde::__private228::Ok(__Field::__field4),
                            "git" => _serde::__private228::Ok(__Field::__field5),
                            "branch" => _serde::__private228::Ok(__Field::__field6),
                            "tag" => _serde::__private228::Ok(__Field::__field7),
                            "rev" => _serde::__private228::Ok(__Field::__field8),
                            "workspace" => _serde::__private228::Ok(__Field::__field9),
                            _ => {
                                let __value =
                                    _serde::__private228::de::Content::String(_serde::__private228::ToString::to_string(__value));
                                _serde::__private228::Ok(__Field::__other(__value))
                            }
                        }
                    }
                    fn visit_bytes<__E>(self, __value: &[u8])
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            b"version" => _serde::__private228::Ok(__Field::__field0),
                            b"path" => _serde::__private228::Ok(__Field::__field1),
                            b"optional" => _serde::__private228::Ok(__Field::__field2),
                            b"default-features" =>
                                _serde::__private228::Ok(__Field::__field3),
                            b"features" => _serde::__private228::Ok(__Field::__field4),
                            b"git" => _serde::__private228::Ok(__Field::__field5),
                            b"branch" => _serde::__private228::Ok(__Field::__field6),
                            b"tag" => _serde::__private228::Ok(__Field::__field7),
                            b"rev" => _serde::__private228::Ok(__Field::__field8),
                            b"workspace" => _serde::__private228::Ok(__Field::__field9),
                            _ => {
                                let __value =
                                    _serde::__private228::de::Content::ByteBuf(__value.to_vec());
                                _serde::__private228::Ok(__Field::__other(__value))
                            }
                        }
                    }
                    fn visit_borrowed_str<__E>(self, __value: &'de str)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            "version" => _serde::__private228::Ok(__Field::__field0),
                            "path" => _serde::__private228::Ok(__Field::__field1),
                            "optional" => _serde::__private228::Ok(__Field::__field2),
                            "default-features" =>
                                _serde::__private228::Ok(__Field::__field3),
                            "features" => _serde::__private228::Ok(__Field::__field4),
                            "git" => _serde::__private228::Ok(__Field::__field5),
                            "branch" => _serde::__private228::Ok(__Field::__field6),
                            "tag" => _serde::__private228::Ok(__Field::__field7),
                            "rev" => _serde::__private228::Ok(__Field::__field8),
                            "workspace" => _serde::__private228::Ok(__Field::__field9),
                            _ => {
                                let __value =
                                    _serde::__private228::de::Content::Str(__value);
                                _serde::__private228::Ok(__Field::__other(__value))
                            }
                        }
                    }
                    fn visit_borrowed_bytes<__E>(self, __value: &'de [u8])
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            b"version" => _serde::__private228::Ok(__Field::__field0),
                            b"path" => _serde::__private228::Ok(__Field::__field1),
                            b"optional" => _serde::__private228::Ok(__Field::__field2),
                            b"default-features" =>
                                _serde::__private228::Ok(__Field::__field3),
                            b"features" => _serde::__private228::Ok(__Field::__field4),
                            b"git" => _serde::__private228::Ok(__Field::__field5),
                            b"branch" => _serde::__private228::Ok(__Field::__field6),
                            b"tag" => _serde::__private228::Ok(__Field::__field7),
                            b"rev" => _serde::__private228::Ok(__Field::__field8),
                            b"workspace" => _serde::__private228::Ok(__Field::__field9),
                            _ => {
                                let __value =
                                    _serde::__private228::de::Content::Bytes(__value);
                                _serde::__private228::Ok(__Field::__other(__value))
                            }
                        }
                    }
                }
                #[automatically_derived]
                impl<'de> _serde::Deserialize<'de> for __Field<'de> {
                    #[inline]
                    fn deserialize<__D>(__deserializer: __D)
                        -> _serde::__private228::Result<Self, __D::Error> where
                        __D: _serde::Deserializer<'de> {
                        _serde::Deserializer::deserialize_identifier(__deserializer,
                            __FieldVisitor)
                    }
                }
                #[doc(hidden)]
                struct __Visitor<'de> {
                    marker: _serde::__private228::PhantomData<Dependency>,
                    lifetime: _serde::__private228::PhantomData<&'de ()>,
                }
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                    type Value = Dependency;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "struct Dependency")
                    }
                    #[inline]
                    fn visit_map<__A>(self, mut __map: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::MapAccess<'de> {
                        let mut __field0:
                                _serde::__private228::Option<Option<String>> =
                            _serde::__private228::None;
                        let mut __field1:
                                _serde::__private228::Option<Option<Directory>> =
                            _serde::__private228::None;
                        let mut __field2: _serde::__private228::Option<bool> =
                            _serde::__private228::None;
                        let mut __field3:
                                _serde::__private228::Option<Option<bool>> =
                            _serde::__private228::None;
                        let mut __field4:
                                _serde::__private228::Option<Vec<String>> =
                            _serde::__private228::None;
                        let mut __field5:
                                _serde::__private228::Option<Option<String>> =
                            _serde::__private228::None;
                        let mut __field6:
                                _serde::__private228::Option<Option<String>> =
                            _serde::__private228::None;
                        let mut __field7:
                                _serde::__private228::Option<Option<String>> =
                            _serde::__private228::None;
                        let mut __field8:
                                _serde::__private228::Option<Option<String>> =
                            _serde::__private228::None;
                        let mut __field9: _serde::__private228::Option<bool> =
                            _serde::__private228::None;
                        let mut __collect =
                            _serde::__private228::Vec::<_serde::__private228::Option<(_serde::__private228::de::Content,
                                    _serde::__private228::de::Content)>>::new();
                        while let _serde::__private228::Some(__key) =
                                _serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
                            match __key {
                                __Field::__field0 => {
                                    if _serde::__private228::Option::is_some(&__field0) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("version"));
                                    }
                                    __field0 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<String>>(&mut __map)?);
                                }
                                __Field::__field1 => {
                                    if _serde::__private228::Option::is_some(&__field1) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("path"));
                                    }
                                    __field1 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<Directory>>(&mut __map)?);
                                }
                                __Field::__field2 => {
                                    if _serde::__private228::Option::is_some(&__field2) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("optional"));
                                    }
                                    __field2 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<bool>(&mut __map)?);
                                }
                                __Field::__field3 => {
                                    if _serde::__private228::Option::is_some(&__field3) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("default-features"));
                                    }
                                    __field3 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)?);
                                }
                                __Field::__field4 => {
                                    if _serde::__private228::Option::is_some(&__field4) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("features"));
                                    }
                                    __field4 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Vec<String>>(&mut __map)?);
                                }
                                __Field::__field5 => {
                                    if _serde::__private228::Option::is_some(&__field5) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("git"));
                                    }
                                    __field5 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<String>>(&mut __map)?);
                                }
                                __Field::__field6 => {
                                    if _serde::__private228::Option::is_some(&__field6) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("branch"));
                                    }
                                    __field6 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<String>>(&mut __map)?);
                                }
                                __Field::__field7 => {
                                    if _serde::__private228::Option::is_some(&__field7) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("tag"));
                                    }
                                    __field7 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<String>>(&mut __map)?);
                                }
                                __Field::__field8 => {
                                    if _serde::__private228::Option::is_some(&__field8) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("rev"));
                                    }
                                    __field8 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<String>>(&mut __map)?);
                                }
                                __Field::__field9 => {
                                    if _serde::__private228::Option::is_some(&__field9) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("workspace"));
                                    }
                                    __field9 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<bool>(&mut __map)?);
                                }
                                __Field::__other(__name) => {
                                    __collect.push(_serde::__private228::Some((__name,
                                                _serde::de::MapAccess::next_value_seed(&mut __map,
                                                        _serde::__private228::de::ContentVisitor::new())?)));
                                }
                            }
                        }
                        let __field0 =
                            match __field0 {
                                _serde::__private228::Some(__field0) => __field0,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("version")?,
                            };
                        let __field1 =
                            match __field1 {
                                _serde::__private228::Some(__field1) => __field1,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("path")?,
                            };
                        let __field2 =
                            match __field2 {
                                _serde::__private228::Some(__field2) => __field2,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field3 =
                            match __field3 {
                                _serde::__private228::Some(__field3) => __field3,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("default-features")?,
                            };
                        let __field4 =
                            match __field4 {
                                _serde::__private228::Some(__field4) => __field4,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field5 =
                            match __field5 {
                                _serde::__private228::Some(__field5) => __field5,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("git")?,
                            };
                        let __field6 =
                            match __field6 {
                                _serde::__private228::Some(__field6) => __field6,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("branch")?,
                            };
                        let __field7 =
                            match __field7 {
                                _serde::__private228::Some(__field7) => __field7,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("tag")?,
                            };
                        let __field8 =
                            match __field8 {
                                _serde::__private228::Some(__field8) => __field8,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("rev")?,
                            };
                        let __field9 =
                            match __field9 {
                                _serde::__private228::Some(__field9) => __field9,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field10: Map<String, Value> =
                            _serde::de::Deserialize::deserialize(_serde::__private228::de::FlatMapDeserializer(&mut __collect,
                                        _serde::__private228::PhantomData))?;
                        _serde::__private228::Ok(Dependency {
                                version: __field0,
                                path: __field1,
                                optional: __field2,
                                default_features: __field3,
                                features: __field4,
                                git: __field5,
                                branch: __field6,
                                tag: __field7,
                                rev: __field8,
                                workspace: __field9,
                                rest: __field10,
                            })
                    }
                }
                _serde::Deserializer::deserialize_map(__deserializer,
                    __Visitor {
                        marker: _serde::__private228::PhantomData::<Dependency>,
                        lifetime: _serde::__private228::PhantomData,
                    })
            }
        }
    };Deserialize, #[automatically_derived]
impl ::core::clone::Clone for Dependency {
    #[inline]
    fn clone(&self) -> Dependency {
        Dependency {
            version: ::core::clone::Clone::clone(&self.version),
            path: ::core::clone::Clone::clone(&self.path),
            optional: ::core::clone::Clone::clone(&self.optional),
            default_features: ::core::clone::Clone::clone(&self.default_features),
            features: ::core::clone::Clone::clone(&self.features),
            git: ::core::clone::Clone::clone(&self.git),
            branch: ::core::clone::Clone::clone(&self.branch),
            tag: ::core::clone::Clone::clone(&self.tag),
            rev: ::core::clone::Clone::clone(&self.rev),
            workspace: ::core::clone::Clone::clone(&self.workspace),
            rest: ::core::clone::Clone::clone(&self.rest),
        }
    }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for Dependency {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        let names: &'static _ =
            &["version", "path", "optional", "default_features", "features",
                        "git", "branch", "tag", "rev", "workspace", "rest"];
        let values: &[&dyn ::core::fmt::Debug] =
            &[&self.version, &self.path, &self.optional,
                        &self.default_features, &self.features, &self.git,
                        &self.branch, &self.tag, &self.rev, &self.workspace,
                        &&self.rest];
        ::core::fmt::Formatter::debug_struct_fields_finish(f, "Dependency",
            names, values)
    }
}Debug)]
132#[serde(remote = "Self")]
133pub struct Dependency {
134    #[serde(skip_serializing_if = "Option::is_none")]
135    pub version: Option<String>,
136    #[serde(skip_serializing_if = "Option::is_none")]
137    pub path: Option<Directory>,
138    #[serde(default, skip_serializing_if = "is_false")]
139    pub optional: bool,
140    #[serde(rename = "default-features", skip_serializing_if = "Option::is_none")]
141    pub default_features: Option<bool>,
142    #[serde(default, skip_serializing_if = "Vec::is_empty")]
143    pub features: Vec<String>,
144    #[serde(skip_serializing_if = "Option::is_none")]
145    pub git: Option<String>,
146    #[serde(skip_serializing_if = "Option::is_none")]
147    pub branch: Option<String>,
148    #[serde(skip_serializing_if = "Option::is_none")]
149    pub tag: Option<String>,
150    #[serde(skip_serializing_if = "Option::is_none")]
151    pub rev: Option<String>,
152    #[serde(default, skip_serializing_if = "is_false")]
153    pub workspace: bool,
154    #[serde(flatten)]
155    pub rest: Map<String, Value>,
156}
157
158#[derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl _serde::Serialize for TargetDependencies {
            fn serialize<__S>(&self, __serializer: __S)
                -> _serde::__private228::Result<__S::Ok, __S::Error> where
                __S: _serde::Serializer {
                let mut __serde_state =
                    _serde::Serializer::serialize_struct(__serializer,
                            "TargetDependencies",
                            false as usize +
                                    if Map::is_empty(&self.dependencies) { 0 } else { 1 } +
                                if Map::is_empty(&self.dev_dependencies) { 0 } else { 1 })?;
                if !Map::is_empty(&self.dependencies) {
                    _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                            "dependencies", &self.dependencies)?;
                } else {
                    _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                            "dependencies")?;
                }
                if !Map::is_empty(&self.dev_dependencies) {
                    _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                            "dev_dependencies", &self.dev_dependencies)?;
                } else {
                    _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                            "dev_dependencies")?;
                }
                _serde::ser::SerializeStruct::end(__serde_state)
            }
        }
    };Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl<'de> _serde::Deserialize<'de> for TargetDependencies {
            fn deserialize<__D>(__deserializer: __D)
                -> _serde::__private228::Result<Self, __D::Error> where
                __D: _serde::Deserializer<'de> {
                #[allow(non_camel_case_types)]
                #[doc(hidden)]
                enum __Field { __field0, __field1, __ignore, }
                #[doc(hidden)]
                struct __FieldVisitor;
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
                    type Value = __Field;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "field identifier")
                    }
                    fn visit_u64<__E>(self, __value: u64)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            0u64 => _serde::__private228::Ok(__Field::__field0),
                            1u64 => _serde::__private228::Ok(__Field::__field1),
                            _ => _serde::__private228::Ok(__Field::__ignore),
                        }
                    }
                    fn visit_str<__E>(self, __value: &str)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            "dependencies" =>
                                _serde::__private228::Ok(__Field::__field0),
                            "dev-dependencies" =>
                                _serde::__private228::Ok(__Field::__field1),
                            "dev_dependencies" =>
                                _serde::__private228::Ok(__Field::__field1),
                            _ => { _serde::__private228::Ok(__Field::__ignore) }
                        }
                    }
                    fn visit_bytes<__E>(self, __value: &[u8])
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            b"dependencies" =>
                                _serde::__private228::Ok(__Field::__field0),
                            b"dev-dependencies" =>
                                _serde::__private228::Ok(__Field::__field1),
                            b"dev_dependencies" =>
                                _serde::__private228::Ok(__Field::__field1),
                            _ => { _serde::__private228::Ok(__Field::__ignore) }
                        }
                    }
                }
                #[automatically_derived]
                impl<'de> _serde::Deserialize<'de> for __Field {
                    #[inline]
                    fn deserialize<__D>(__deserializer: __D)
                        -> _serde::__private228::Result<Self, __D::Error> where
                        __D: _serde::Deserializer<'de> {
                        _serde::Deserializer::deserialize_identifier(__deserializer,
                            __FieldVisitor)
                    }
                }
                #[doc(hidden)]
                struct __Visitor<'de> {
                    marker: _serde::__private228::PhantomData<TargetDependencies>,
                    lifetime: _serde::__private228::PhantomData<&'de ()>,
                }
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                    type Value = TargetDependencies;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "struct TargetDependencies")
                    }
                    #[inline]
                    fn visit_seq<__A>(self, mut __seq: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::SeqAccess<'de> {
                        let __field0 =
                            match _serde::de::SeqAccess::next_element::<Map<String,
                                            Dependency>>(&mut __seq)? {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field1 =
                            match _serde::de::SeqAccess::next_element::<Map<String,
                                            Dependency>>(&mut __seq)? {
                                _serde::__private228::Some(__value) => __value,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        _serde::__private228::Ok(TargetDependencies {
                                dependencies: __field0,
                                dev_dependencies: __field1,
                            })
                    }
                    #[inline]
                    fn visit_map<__A>(self, mut __map: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::MapAccess<'de> {
                        let mut __field0:
                                _serde::__private228::Option<Map<String, Dependency>> =
                            _serde::__private228::None;
                        let mut __field1:
                                _serde::__private228::Option<Map<String, Dependency>> =
                            _serde::__private228::None;
                        while let _serde::__private228::Some(__key) =
                                _serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
                            match __key {
                                __Field::__field0 => {
                                    if _serde::__private228::Option::is_some(&__field0) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("dependencies"));
                                    }
                                    __field0 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Map<String,
                                                        Dependency>>(&mut __map)?);
                                }
                                __Field::__field1 => {
                                    if _serde::__private228::Option::is_some(&__field1) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("dev_dependencies"));
                                    }
                                    __field1 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Map<String,
                                                        Dependency>>(&mut __map)?);
                                }
                                _ => {
                                    let _ =
                                        _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
                                }
                            }
                        }
                        let __field0 =
                            match __field0 {
                                _serde::__private228::Some(__field0) => __field0,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        let __field1 =
                            match __field1 {
                                _serde::__private228::Some(__field1) => __field1,
                                _serde::__private228::None =>
                                    _serde::__private228::Default::default(),
                            };
                        _serde::__private228::Ok(TargetDependencies {
                                dependencies: __field0,
                                dev_dependencies: __field1,
                            })
                    }
                }
                #[doc(hidden)]
                const FIELDS: &'static [&'static str] =
                    &["dependencies", "dev-dependencies", "dev_dependencies"];
                _serde::Deserializer::deserialize_struct(__deserializer,
                    "TargetDependencies", FIELDS,
                    __Visitor {
                        marker: _serde::__private228::PhantomData::<TargetDependencies>,
                        lifetime: _serde::__private228::PhantomData,
                    })
            }
        }
    };Deserialize, #[automatically_derived]
impl ::core::clone::Clone for TargetDependencies {
    #[inline]
    fn clone(&self) -> TargetDependencies {
        TargetDependencies {
            dependencies: ::core::clone::Clone::clone(&self.dependencies),
            dev_dependencies: ::core::clone::Clone::clone(&self.dev_dependencies),
        }
    }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for TargetDependencies {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::debug_struct_field2_finish(f,
            "TargetDependencies", "dependencies", &self.dependencies,
            "dev_dependencies", &&self.dev_dependencies)
    }
}Debug)]
159pub struct TargetDependencies {
160    #[serde(default, skip_serializing_if = "Map::is_empty")]
161    pub dependencies: Map<String, Dependency>,
162    #[serde(
163        default,
164        alias = "dev-dependencies",
165        skip_serializing_if = "Map::is_empty"
166    )]
167    pub dev_dependencies: Map<String, Dependency>,
168}
169
170#[derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl _serde::Serialize for RegistryPatch {
            fn serialize<__S>(&self, __serializer: __S)
                -> _serde::__private228::Result<__S::Ok, __S::Error> where
                __S: _serde::Serializer {
                _serde::Serialize::serialize(&self.crates, __serializer)
            }
        }
    };Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl<'de> _serde::Deserialize<'de> for RegistryPatch {
            fn deserialize<__D>(__deserializer: __D)
                -> _serde::__private228::Result<Self, __D::Error> where
                __D: _serde::Deserializer<'de> {
                _serde::__private228::Result::map(_serde::Deserialize::deserialize(__deserializer),
                    |__transparent| RegistryPatch { crates: __transparent })
            }
        }
    };Deserialize, #[automatically_derived]
impl ::core::clone::Clone for RegistryPatch {
    #[inline]
    fn clone(&self) -> RegistryPatch {
        RegistryPatch { crates: ::core::clone::Clone::clone(&self.crates) }
    }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for RegistryPatch {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::debug_struct_field1_finish(f, "RegistryPatch",
            "crates", &&self.crates)
    }
}Debug)]
171#[serde(transparent)]
172pub struct RegistryPatch {
173    pub crates: Map<String, Patch>,
174}
175
176#[derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl _serde::Serialize for Patch {
            fn serialize<__S>(&self, __serializer: __S)
                -> _serde::__private228::Result<__S::Ok, __S::Error> where
                __S: _serde::Serializer {
                let mut __serde_state =
                    _serde::Serializer::serialize_map(__serializer,
                            _serde::__private228::None)?;
                if !Option::is_none(&self.path) {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "path", &self.path)?;
                }
                if !Option::is_none(&self.git) {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "git", &self.git)?;
                }
                if !Option::is_none(&self.branch) {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "branch", &self.branch)?;
                }
                if !Option::is_none(&self.tag) {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "tag", &self.tag)?;
                }
                if !Option::is_none(&self.rev) {
                    _serde::ser::SerializeMap::serialize_entry(&mut __serde_state,
                            "rev", &self.rev)?;
                }
                _serde::Serialize::serialize(&&self.rest,
                        _serde::__private228::ser::FlatMapSerializer(&mut __serde_state))?;
                _serde::ser::SerializeMap::end(__serde_state)
            }
        }
    };Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
    {
        #[allow(unused_extern_crates, clippy :: useless_attribute)]
        extern crate serde as _serde;
        ;
        #[automatically_derived]
        impl<'de> _serde::Deserialize<'de> for Patch {
            fn deserialize<__D>(__deserializer: __D)
                -> _serde::__private228::Result<Self, __D::Error> where
                __D: _serde::Deserializer<'de> {
                #[allow(non_camel_case_types)]
                #[doc(hidden)]
                enum __Field<'de> {
                    __field0,
                    __field1,
                    __field2,
                    __field3,
                    __field4,
                    __other(_serde::__private228::de::Content<'de>),
                }
                #[doc(hidden)]
                struct __FieldVisitor;
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
                    type Value = __Field<'de>;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "field identifier")
                    }
                    fn visit_bool<__E>(self, __value: bool)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::Bool(__value)))
                    }
                    fn visit_i8<__E>(self, __value: i8)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::I8(__value)))
                    }
                    fn visit_i16<__E>(self, __value: i16)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::I16(__value)))
                    }
                    fn visit_i32<__E>(self, __value: i32)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::I32(__value)))
                    }
                    fn visit_i64<__E>(self, __value: i64)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::I64(__value)))
                    }
                    fn visit_u8<__E>(self, __value: u8)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::U8(__value)))
                    }
                    fn visit_u16<__E>(self, __value: u16)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::U16(__value)))
                    }
                    fn visit_u32<__E>(self, __value: u32)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::U32(__value)))
                    }
                    fn visit_u64<__E>(self, __value: u64)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::U64(__value)))
                    }
                    fn visit_f32<__E>(self, __value: f32)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::F32(__value)))
                    }
                    fn visit_f64<__E>(self, __value: f64)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::F64(__value)))
                    }
                    fn visit_char<__E>(self, __value: char)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::Char(__value)))
                    }
                    fn visit_unit<__E>(self)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        _serde::__private228::Ok(__Field::__other(_serde::__private228::de::Content::Unit))
                    }
                    fn visit_str<__E>(self, __value: &str)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            "path" => _serde::__private228::Ok(__Field::__field0),
                            "git" => _serde::__private228::Ok(__Field::__field1),
                            "branch" => _serde::__private228::Ok(__Field::__field2),
                            "tag" => _serde::__private228::Ok(__Field::__field3),
                            "rev" => _serde::__private228::Ok(__Field::__field4),
                            _ => {
                                let __value =
                                    _serde::__private228::de::Content::String(_serde::__private228::ToString::to_string(__value));
                                _serde::__private228::Ok(__Field::__other(__value))
                            }
                        }
                    }
                    fn visit_bytes<__E>(self, __value: &[u8])
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            b"path" => _serde::__private228::Ok(__Field::__field0),
                            b"git" => _serde::__private228::Ok(__Field::__field1),
                            b"branch" => _serde::__private228::Ok(__Field::__field2),
                            b"tag" => _serde::__private228::Ok(__Field::__field3),
                            b"rev" => _serde::__private228::Ok(__Field::__field4),
                            _ => {
                                let __value =
                                    _serde::__private228::de::Content::ByteBuf(__value.to_vec());
                                _serde::__private228::Ok(__Field::__other(__value))
                            }
                        }
                    }
                    fn visit_borrowed_str<__E>(self, __value: &'de str)
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            "path" => _serde::__private228::Ok(__Field::__field0),
                            "git" => _serde::__private228::Ok(__Field::__field1),
                            "branch" => _serde::__private228::Ok(__Field::__field2),
                            "tag" => _serde::__private228::Ok(__Field::__field3),
                            "rev" => _serde::__private228::Ok(__Field::__field4),
                            _ => {
                                let __value =
                                    _serde::__private228::de::Content::Str(__value);
                                _serde::__private228::Ok(__Field::__other(__value))
                            }
                        }
                    }
                    fn visit_borrowed_bytes<__E>(self, __value: &'de [u8])
                        -> _serde::__private228::Result<Self::Value, __E> where
                        __E: _serde::de::Error {
                        match __value {
                            b"path" => _serde::__private228::Ok(__Field::__field0),
                            b"git" => _serde::__private228::Ok(__Field::__field1),
                            b"branch" => _serde::__private228::Ok(__Field::__field2),
                            b"tag" => _serde::__private228::Ok(__Field::__field3),
                            b"rev" => _serde::__private228::Ok(__Field::__field4),
                            _ => {
                                let __value =
                                    _serde::__private228::de::Content::Bytes(__value);
                                _serde::__private228::Ok(__Field::__other(__value))
                            }
                        }
                    }
                }
                #[automatically_derived]
                impl<'de> _serde::Deserialize<'de> for __Field<'de> {
                    #[inline]
                    fn deserialize<__D>(__deserializer: __D)
                        -> _serde::__private228::Result<Self, __D::Error> where
                        __D: _serde::Deserializer<'de> {
                        _serde::Deserializer::deserialize_identifier(__deserializer,
                            __FieldVisitor)
                    }
                }
                #[doc(hidden)]
                struct __Visitor<'de> {
                    marker: _serde::__private228::PhantomData<Patch>,
                    lifetime: _serde::__private228::PhantomData<&'de ()>,
                }
                #[automatically_derived]
                impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                    type Value = Patch;
                    fn expecting(&self,
                        __formatter: &mut _serde::__private228::Formatter)
                        -> _serde::__private228::fmt::Result {
                        _serde::__private228::Formatter::write_str(__formatter,
                            "struct Patch")
                    }
                    #[inline]
                    fn visit_map<__A>(self, mut __map: __A)
                        -> _serde::__private228::Result<Self::Value, __A::Error>
                        where __A: _serde::de::MapAccess<'de> {
                        let mut __field0:
                                _serde::__private228::Option<Option<PathBuf>> =
                            _serde::__private228::None;
                        let mut __field1:
                                _serde::__private228::Option<Option<String>> =
                            _serde::__private228::None;
                        let mut __field2:
                                _serde::__private228::Option<Option<String>> =
                            _serde::__private228::None;
                        let mut __field3:
                                _serde::__private228::Option<Option<String>> =
                            _serde::__private228::None;
                        let mut __field4:
                                _serde::__private228::Option<Option<String>> =
                            _serde::__private228::None;
                        let mut __collect =
                            _serde::__private228::Vec::<_serde::__private228::Option<(_serde::__private228::de::Content,
                                    _serde::__private228::de::Content)>>::new();
                        while let _serde::__private228::Some(__key) =
                                _serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
                            match __key {
                                __Field::__field0 => {
                                    if _serde::__private228::Option::is_some(&__field0) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("path"));
                                    }
                                    __field0 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<PathBuf>>(&mut __map)?);
                                }
                                __Field::__field1 => {
                                    if _serde::__private228::Option::is_some(&__field1) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("git"));
                                    }
                                    __field1 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<String>>(&mut __map)?);
                                }
                                __Field::__field2 => {
                                    if _serde::__private228::Option::is_some(&__field2) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("branch"));
                                    }
                                    __field2 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<String>>(&mut __map)?);
                                }
                                __Field::__field3 => {
                                    if _serde::__private228::Option::is_some(&__field3) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("tag"));
                                    }
                                    __field3 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<String>>(&mut __map)?);
                                }
                                __Field::__field4 => {
                                    if _serde::__private228::Option::is_some(&__field4) {
                                        return _serde::__private228::Err(<__A::Error as
                                                        _serde::de::Error>::duplicate_field("rev"));
                                    }
                                    __field4 =
                                        _serde::__private228::Some(_serde::de::MapAccess::next_value::<Option<String>>(&mut __map)?);
                                }
                                __Field::__other(__name) => {
                                    __collect.push(_serde::__private228::Some((__name,
                                                _serde::de::MapAccess::next_value_seed(&mut __map,
                                                        _serde::__private228::de::ContentVisitor::new())?)));
                                }
                            }
                        }
                        let __field0 =
                            match __field0 {
                                _serde::__private228::Some(__field0) => __field0,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("path")?,
                            };
                        let __field1 =
                            match __field1 {
                                _serde::__private228::Some(__field1) => __field1,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("git")?,
                            };
                        let __field2 =
                            match __field2 {
                                _serde::__private228::Some(__field2) => __field2,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("branch")?,
                            };
                        let __field3 =
                            match __field3 {
                                _serde::__private228::Some(__field3) => __field3,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("tag")?,
                            };
                        let __field4 =
                            match __field4 {
                                _serde::__private228::Some(__field4) => __field4,
                                _serde::__private228::None =>
                                    _serde::__private228::de::missing_field("rev")?,
                            };
                        let __field5: Map<String, Value> =
                            _serde::de::Deserialize::deserialize(_serde::__private228::de::FlatMapDeserializer(&mut __collect,
                                        _serde::__private228::PhantomData))?;
                        _serde::__private228::Ok(Patch {
                                path: __field0,
                                git: __field1,
                                branch: __field2,
                                tag: __field3,
                                rev: __field4,
                                rest: __field5,
                            })
                    }
                }
                _serde::Deserializer::deserialize_map(__deserializer,
                    __Visitor {
                        marker: _serde::__private228::PhantomData::<Patch>,
                        lifetime: _serde::__private228::PhantomData,
                    })
            }
        }
    };Deserialize, #[automatically_derived]
impl ::core::clone::Clone for Patch {
    #[inline]
    fn clone(&self) -> Patch {
        Patch {
            path: ::core::clone::Clone::clone(&self.path),
            git: ::core::clone::Clone::clone(&self.git),
            branch: ::core::clone::Clone::clone(&self.branch),
            tag: ::core::clone::Clone::clone(&self.tag),
            rev: ::core::clone::Clone::clone(&self.rev),
            rest: ::core::clone::Clone::clone(&self.rest),
        }
    }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for Patch {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        let names: &'static _ =
            &["path", "git", "branch", "tag", "rev", "rest"];
        let values: &[&dyn ::core::fmt::Debug] =
            &[&self.path, &self.git, &self.branch, &self.tag, &self.rev,
                        &&self.rest];
        ::core::fmt::Formatter::debug_struct_fields_finish(f, "Patch", names,
            values)
    }
}Debug)]
177pub struct Patch {
178    #[serde(skip_serializing_if = "Option::is_none")]
179    pub path: Option<PathBuf>,
180    #[serde(skip_serializing_if = "Option::is_none")]
181    pub git: Option<String>,
182    #[serde(skip_serializing_if = "Option::is_none")]
183    pub branch: Option<String>,
184    #[serde(skip_serializing_if = "Option::is_none")]
185    pub tag: Option<String>,
186    #[serde(skip_serializing_if = "Option::is_none")]
187    pub rev: Option<String>,
188    #[serde(flatten)]
189    pub rest: Map<String, Value>,
190}
191
192fn is_false(boolean: &bool) -> bool {
193    !*boolean
194}
195
196impl Default for EditionOrInherit {
197    fn default() -> Self {
198        EditionOrInherit::Edition(Edition::default())
199    }
200}
201
202impl<'de> Deserialize<'de> for EditionOrInherit {
203    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
204    where
205        D: Deserializer<'de>,
206    {
207        struct EditionOrInheritVisitor;
208
209        impl<'de> Visitor<'de> for EditionOrInheritVisitor {
210            type Value = EditionOrInherit;
211
212            fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
213                formatter.write_str("edition")
214            }
215
216            fn visit_str<E>(self, s: &str) -> Result<Self::Value, E>
217            where
218                E: de::Error,
219            {
220                Edition::deserialize(StrDeserializer::new(s)).map(EditionOrInherit::Edition)
221            }
222
223            fn visit_map<M>(self, map: M) -> Result<Self::Value, M::Error>
224            where
225                M: de::MapAccess<'de>,
226            {
227                InheritEdition::deserialize(MapAccessDeserializer::new(map))?;
228                Ok(EditionOrInherit::Inherit)
229            }
230        }
231
232        deserializer.deserialize_any(EditionOrInheritVisitor)
233    }
234}
235
236impl Serialize for Dependency {
237    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
238    where
239        S: Serializer,
240    {
241        Dependency::serialize(self, serializer)
242    }
243}
244
245impl<'de> Deserialize<'de> for Dependency {
246    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
247    where
248        D: Deserializer<'de>,
249    {
250        struct DependencyVisitor;
251
252        impl<'de> Visitor<'de> for DependencyVisitor {
253            type Value = Dependency;
254
255            fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
256                formatter.write_str(
257                    "a version string like \"0.9.8\" or a \
258                     dependency like { version = \"0.9.8\" }",
259                )
260            }
261
262            fn visit_str<E>(self, s: &str) -> Result<Self::Value, E>
263            where
264                E: de::Error,
265            {
266                Ok(Dependency {
267                    version: Some(s.to_owned()),
268                    path: None,
269                    optional: false,
270                    default_features: Some(true),
271                    features: Vec::new(),
272                    git: None,
273                    branch: None,
274                    tag: None,
275                    rev: None,
276                    workspace: false,
277                    rest: Map::new(),
278                })
279            }
280
281            fn visit_map<M>(self, map: M) -> Result<Self::Value, M::Error>
282            where
283                M: de::MapAccess<'de>,
284            {
285                Dependency::deserialize(MapAccessDeserializer::new(map))
286            }
287        }
288
289        deserializer.deserialize_any(DependencyVisitor)
290    }
291}