fn try_from()

in src/serialization.rs [227:263]


        fn try_from(value: AllPolicies) -> Result<Self, Self::Error> {
            let mut policy = Policy::default();
            for (name, entry) in value.0 {
                match name.split_once(VERSION_SEPARATOR) {
                    Some((crate_name, crate_version)) => {
                        match policy
                            .package
                            .entry(crate_name.to_owned())
                            .or_insert_with(|| PackagePolicyEntry::Versioned {
                                version: Default::default(),
                            }) {
                            PackagePolicyEntry::Versioned { version } => {
                                version.insert(crate_version.parse()?, entry);
                            }
                            PackagePolicyEntry::Unversioned(_) => {
                                return Err(FromAllPoliciesError::MixedVersioning {
                                    name: crate_name.to_owned(),
                                });
                            }
                        }
                    }
                    None => {
                        if policy
                            .package
                            .insert(name.clone(), PackagePolicyEntry::Unversioned(entry))
                            .is_some()
                        {
                            // The entry _must_ have been `PackagePolicyEntry::Versioned`, because
                            // if it were unversioned there would be no way for more than one entry
                            // to exist in the AllPolicies map.
                            return Err(FromAllPoliciesError::MixedVersioning { name });
                        }
                    }
                }
            }
            Ok(policy)
        }