Update edition to 2021

Maxime “pep” Buquet created

- Remove TryFrom/Into and FromIterator imports
- Prevent impl_validator_using_provider macro in sasl crate from
  constructing trait object

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>

Change summary

Cargo.toml                              | 1 +
jid/Cargo.toml                          | 2 +-
jid/src/lib.rs                          | 1 -
minidom/Cargo.toml                      | 2 +-
minidom/src/element.rs                  | 3 ---
minidom/src/node.rs                     | 1 -
parsers/Cargo.toml                      | 2 +-
parsers/examples/generate-caps.rs       | 1 -
parsers/src/attention.rs                | 1 -
parsers/src/avatar.rs                   | 1 -
parsers/src/bind.rs                     | 1 -
parsers/src/blocking.rs                 | 1 -
parsers/src/bob.rs                      | 1 -
parsers/src/bookmarks.rs                | 1 -
parsers/src/bookmarks2.rs               | 2 --
parsers/src/caps.rs                     | 1 -
parsers/src/carbons.rs                  | 1 -
parsers/src/cert_management.rs          | 1 -
parsers/src/chatstates.rs               | 1 -
parsers/src/component.rs                | 1 -
parsers/src/csi.rs                      | 1 -
parsers/src/data_forms.rs               | 1 -
parsers/src/delay.rs                    | 1 -
parsers/src/disco.rs                    | 1 -
parsers/src/ecaps2.rs                   | 1 -
parsers/src/eme.rs                      | 1 -
parsers/src/extdisco.rs                 | 1 -
parsers/src/forwarding.rs               | 1 -
parsers/src/hashes.rs                   | 1 -
parsers/src/http_upload.rs              | 3 ---
parsers/src/ibb.rs                      | 1 -
parsers/src/ibr.rs                      | 1 -
parsers/src/idle.rs                     | 1 -
parsers/src/iq.rs                       | 1 -
parsers/src/jid_prep.rs                 | 1 -
parsers/src/jingle.rs                   | 1 -
parsers/src/jingle_dtls_srtp.rs         | 1 -
parsers/src/jingle_ft.rs                | 1 -
parsers/src/jingle_grouping.rs          | 1 -
parsers/src/jingle_ibb.rs               | 1 -
parsers/src/jingle_ice_udp.rs           | 1 -
parsers/src/jingle_message.rs           | 1 -
parsers/src/jingle_raw_udp.rs           | 1 -
parsers/src/jingle_rtcp_fb.rs           | 1 -
parsers/src/jingle_rtp.rs               | 1 -
parsers/src/jingle_rtp_hdrext.rs        | 1 -
parsers/src/jingle_s5b.rs               | 1 -
parsers/src/jingle_ssma.rs              | 1 -
parsers/src/legacy_omemo.rs             | 1 -
parsers/src/mam.rs                      | 1 -
parsers/src/mam_prefs.rs                | 1 -
parsers/src/media_element.rs            | 1 -
parsers/src/message.rs                  | 1 -
parsers/src/message_correct.rs          | 1 -
parsers/src/mix.rs                      | 1 -
parsers/src/mood.rs                     | 1 -
parsers/src/muc/muc.rs                  | 1 -
parsers/src/muc/user.rs                 | 1 -
parsers/src/nick.rs                     | 1 -
parsers/src/occupant_id.rs              | 1 -
parsers/src/ping.rs                     | 1 -
parsers/src/presence.rs                 | 1 -
parsers/src/pubsub/event.rs             | 1 -
parsers/src/pubsub/owner.rs             | 1 -
parsers/src/pubsub/pubsub.rs            | 1 -
parsers/src/receipts.rs                 | 1 -
parsers/src/roster.rs                   | 1 -
parsers/src/rsm.rs                      | 1 -
parsers/src/rtt.rs                      | 2 --
parsers/src/sasl.rs                     | 2 --
parsers/src/server_info.rs              | 1 -
parsers/src/sm.rs                       | 1 -
parsers/src/stanza_error.rs             | 1 -
parsers/src/stanza_id.rs                | 1 -
parsers/src/stream.rs                   | 1 -
parsers/src/time.rs                     | 1 -
parsers/src/tune.rs                     | 1 -
parsers/src/version.rs                  | 1 -
parsers/src/websocket.rs                | 1 -
parsers/src/xhtml.rs                    | 1 -
sasl/Cargo.toml                         | 2 +-
sasl/src/server/mod.rs                  | 2 +-
tokio-xmpp/Cargo.toml                   | 2 +-
tokio-xmpp/examples/contact_addr.rs     | 1 -
tokio-xmpp/examples/download_avatars.rs | 1 -
tokio-xmpp/examples/echo_bot.rs         | 1 -
tokio-xmpp/examples/echo_component.rs   | 1 -
tokio-xmpp/src/client/auth.rs           | 1 -
tokio-xmpp/src/client/bind.rs           | 1 -
tokio-xmpp/src/starttls.rs              | 1 -
xmpp/Cargo.toml                         | 2 +-
xmpp/src/lib.rs                         | 1 -
xmpp/src/pubsub/avatar.rs               | 1 -
xmpp/src/pubsub/mod.rs                  | 1 -
94 files changed, 8 insertions(+), 100 deletions(-)

Detailed changes

Cargo.toml 🔗

@@ -7,6 +7,7 @@ members = [  # alphabetically sorted
   "tokio-xmpp",
   "xmpp",
 ]
+resolver = "2"
 
 [patch.crates-io]
 jid = { path = "jid" }

jid/Cargo.toml 🔗

@@ -13,7 +13,7 @@ documentation = "https://docs.rs/jid"
 readme = "README.md"
 keywords = ["xmpp", "jid"]
 license = "MPL-2.0"
-edition = "2018"
+edition = "2021"
 
 [badges]
 gitlab = { repository = "xmpp-rs/xmpp-rs" }

jid/src/lib.rs 🔗

@@ -31,7 +31,6 @@
 //!   mixing left-to-write and right-to-left characters
 
 use core::num::NonZeroU16;
-use std::convert::TryFrom;
 use std::fmt;
 use std::str::FromStr;
 

minidom/Cargo.toml 🔗

@@ -15,7 +15,7 @@ documentation = "https://docs.rs/minidom"
 readme = "README.md"
 keywords = ["xml", "xmpp"]
 license = "MPL-2.0"
-edition = "2018"
+edition = "2021"
 
 [badges]
 gitlab = { repository = "xmpp-rs/xmpp-rs" }

minidom/src/element.rs 🔗

@@ -20,7 +20,6 @@ use crate::prefixes::{Namespace, Prefix, Prefixes};
 use crate::tree_builder::TreeBuilder;
 
 use std::collections::{btree_map, BTreeMap};
-use std::convert::{TryFrom, TryInto};
 use std::io::{BufRead, Write};
 use std::sync::Arc;
 
@@ -884,8 +883,6 @@ mod tests {
 
     #[test]
     fn test_element_new() {
-        use std::iter::FromIterator;
-
         let elem = Element::new(
             "name".to_owned(),
             "namespace".to_owned(),

minidom/src/node.rs 🔗

@@ -13,7 +13,6 @@ use crate::error::Result;
 
 use rxml::writer::Item;
 
-use std::convert::TryInto;
 use std::io::Write;
 
 /// A node in an element tree.

parsers/Cargo.toml 🔗

@@ -11,7 +11,7 @@ repository = "https://gitlab.com/xmpp-rs/xmpp-rs"
 keywords = ["xmpp", "jabber", "xml"]
 categories = ["parsing", "network-programming"]
 license = "MPL-2.0"
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 minidom = "0.15"

parsers/examples/generate-caps.rs 🔗

@@ -4,7 +4,6 @@
 // License, v. 2.0. If a copy of the MPL was not distributed with this
 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-use std::convert::TryFrom;
 use std::env;
 use std::io::{self, Read};
 use xmpp_parsers::{

parsers/src/attention.rs 🔗

@@ -21,7 +21,6 @@ mod tests {
     #[cfg(not(feature = "disable-validation"))]
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[test]
     fn test_size() {

parsers/src/avatar.rs 🔗

@@ -61,7 +61,6 @@ mod tests {
     #[cfg(not(feature = "disable-validation"))]
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/bind.rs 🔗

@@ -9,7 +9,6 @@ use crate::ns;
 use crate::util::error::Error;
 use crate::Element;
 use jid::{FullJid, Jid};
-use std::convert::TryFrom;
 use std::str::FromStr;
 
 /// The request for resource binding, which is the process by which a client

parsers/src/blocking.rs 🔗

@@ -9,7 +9,6 @@ use crate::ns;
 use crate::util::error::Error;
 use crate::Element;
 use jid::Jid;
-use std::convert::TryFrom;
 
 generate_empty_element!(
     /// The element requesting the blocklist, the result iq will contain a

parsers/src/bob.rs 🔗

@@ -89,7 +89,6 @@ generate_element!(
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/bookmarks.rs 🔗

@@ -71,7 +71,6 @@ impl Storage {
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/bookmarks2.rs 🔗

@@ -6,7 +6,6 @@
 use crate::ns;
 use crate::util::error::Error;
 use crate::Element;
-use std::convert::TryFrom;
 
 generate_attribute!(
     /// Whether a conference bookmark should be joined automatically.
@@ -123,7 +122,6 @@ mod tests {
     use super::*;
     use crate::pubsub::{pubsub::Item as PubSubItem, PubSubEvent};
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/caps.rs 🔗

@@ -17,7 +17,6 @@ use digest::{Digest, Update, VariableOutput};
 use sha1::Sha1;
 use sha2::{Sha256, Sha512};
 use sha3::{Sha3_256, Sha3_512};
-use std::convert::TryFrom;
 
 /// Represents a capability hash for a given client.
 #[derive(Debug, Clone)]

parsers/src/carbons.rs 🔗

@@ -64,7 +64,6 @@ impl MessagePayload for Sent {}
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/cert_management.rs 🔗

@@ -121,7 +121,6 @@ mod tests {
     use super::*;
     use crate::ns;
     use crate::Element;
-    use std::convert::TryFrom;
     use std::str::FromStr;
 
     #[cfg(target_pointer_width = "32")]

parsers/src/chatstates.rs 🔗

@@ -35,7 +35,6 @@ mod tests {
     use crate::ns;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[test]
     fn test_size() {

parsers/src/component.rs 🔗

@@ -44,7 +44,6 @@ impl Handshake {
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/csi.rs 🔗

@@ -30,7 +30,6 @@ mod tests {
     use super::*;
     use crate::ns;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[test]
     fn test_size() {

parsers/src/data_forms.rs 🔗

@@ -8,7 +8,6 @@ use crate::media_element::MediaElement;
 use crate::ns;
 use crate::util::error::Error;
 use crate::Element;
-use std::convert::TryFrom;
 
 generate_element!(
     /// Represents one of the possible values for a list- field.

parsers/src/delay.rs 🔗

@@ -35,7 +35,6 @@ mod tests {
     use crate::util::error::Error;
     use crate::Element;
     use jid::BareJid;
-    use std::convert::TryFrom;
     use std::str::FromStr;
 
     #[cfg(target_pointer_width = "32")]

parsers/src/disco.rs 🔗

@@ -10,7 +10,6 @@ use crate::ns;
 use crate::util::error::Error;
 use crate::Element;
 use jid::Jid;
-use std::convert::TryFrom;
 
 generate_element!(
 /// Structure representing a `<query xmlns='http://jabber.org/protocol/disco#info'/>` element.

parsers/src/ecaps2.rs 🔗

@@ -185,7 +185,6 @@ mod tests {
     use super::*;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/eme.rs 🔗

@@ -26,7 +26,6 @@ mod tests {
     use super::*;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/extdisco.rs 🔗

@@ -141,7 +141,6 @@ mod tests {
     use super::*;
     use crate::ns;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/forwarding.rs 🔗

@@ -28,7 +28,6 @@ mod tests {
     use super::*;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/hashes.rs 🔗

@@ -205,7 +205,6 @@ impl Deref for Sha1HexAttribute {
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/http_upload.rs 🔗

@@ -4,8 +4,6 @@
 // License, v. 2.0. If a copy of the MPL was not distributed with this
 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-use std::convert::TryFrom;
-
 use crate::iq::{IqGetPayload, IqResultPayload};
 use crate::ns;
 use crate::util::error::Error;
@@ -117,7 +115,6 @@ impl IqResultPayload for SlotResult {}
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[test]
     fn test_slot_request() {

parsers/src/ibb.rs 🔗

@@ -74,7 +74,6 @@ mod tests {
     use super::*;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/ibr.rs 🔗

@@ -10,7 +10,6 @@ use crate::ns;
 use crate::util::error::Error;
 use crate::Element;
 use std::collections::HashMap;
-use std::convert::TryFrom;
 
 /// Query for registering against a service.
 #[derive(Debug, Clone)]

parsers/src/idle.rs 🔗

@@ -23,7 +23,6 @@ mod tests {
     use super::*;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
     use std::str::FromStr;
 
     #[test]

parsers/src/iq.rs 🔗

@@ -11,7 +11,6 @@ use crate::util::error::Error;
 use crate::Element;
 use jid::Jid;
 use minidom::IntoAttributeValue;
-use std::convert::TryFrom;
 
 /// Should be implemented on every known payload of an `<iq type='get'/>`.
 pub trait IqGetPayload: TryFrom<Element> + Into<Element> {}

parsers/src/jid_prep.rs 🔗

@@ -42,7 +42,6 @@ mod tests {
     use super::*;
     use crate::Element;
     use jid::FullJid;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/jingle.rs 🔗

@@ -15,7 +15,6 @@ use crate::util::error::Error;
 use crate::Element;
 use jid::Jid;
 use std::collections::BTreeMap;
-use std::convert::TryFrom;
 use std::fmt;
 use std::str::FromStr;
 

parsers/src/jingle_dtls_srtp.rs 🔗

@@ -73,7 +73,6 @@ impl Fingerprint {
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/jingle_ft.rs 🔗

@@ -11,7 +11,6 @@ use crate::ns;
 use crate::util::error::Error;
 use minidom::{Element, Node};
 use std::collections::BTreeMap;
-use std::convert::TryFrom;
 use std::str::FromStr;
 
 generate_element!(

parsers/src/jingle_grouping.rs 🔗

@@ -52,7 +52,6 @@ generate_element!(
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/jingle_ibb.rs 🔗

@@ -26,7 +26,6 @@ mod tests {
     use super::*;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/jingle_ice_udp.rs 🔗

@@ -114,7 +114,6 @@ mod tests {
     use crate::hashes::Algo;
     use crate::jingle_dtls_srtp::Setup;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/jingle_message.rs 🔗

@@ -8,7 +8,6 @@ use crate::jingle::SessionId;
 use crate::ns;
 use crate::util::error::Error;
 use crate::Element;
-use std::convert::TryFrom;
 
 /// Defines a protocol for broadcasting Jingle requests to all of the clients
 /// of a user.

parsers/src/jingle_raw_udp.rs 🔗

@@ -60,7 +60,6 @@ generate_element!(
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/jingle_rtcp_fb.rs 🔗

@@ -20,7 +20,6 @@ generate_element!(
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/jingle_rtp.rs 🔗

@@ -153,7 +153,6 @@ generate_element!(
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/jingle_rtp_hdrext.rs 🔗

@@ -56,7 +56,6 @@ impl RtpHdrext {
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/jingle_s5b.rs 🔗

@@ -8,7 +8,6 @@ use crate::ns;
 use crate::util::error::Error;
 use crate::Element;
 use jid::Jid;
-use std::convert::TryFrom;
 use std::net::IpAddr;
 
 generate_attribute!(

parsers/src/jingle_ssma.rs 🔗

@@ -79,7 +79,6 @@ generate_element!(
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/legacy_omemo.rs 🔗

@@ -182,7 +182,6 @@ impl MessagePayload for Encrypted {}
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryInto;
 
     #[test]
     fn parse_bundle() {

parsers/src/mam.rs 🔗

@@ -92,7 +92,6 @@ mod tests {
     use super::*;
     use crate::util::error::Error;
     use minidom::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/mam_prefs.rs 🔗

@@ -9,7 +9,6 @@ use crate::ns;
 use crate::util::error::Error;
 use jid::Jid;
 use minidom::{Element, Node};
-use std::convert::TryFrom;
 
 generate_attribute!(
     /// Notes the default archiving preference for the user.

parsers/src/media_element.rs 🔗

@@ -48,7 +48,6 @@ mod tests {
     use crate::data_forms::DataForm;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/message.rs 🔗

@@ -9,7 +9,6 @@ use crate::util::error::Error;
 use crate::Element;
 use jid::Jid;
 use std::collections::BTreeMap;
-use std::convert::TryFrom;
 
 /// Should be implemented on every known payload of a `<message/>`.
 pub trait MessagePayload: TryFrom<Element> + Into<Element> {}

parsers/src/message_correct.rs 🔗

@@ -23,7 +23,6 @@ mod tests {
     use super::*;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/mix.rs 🔗

@@ -255,7 +255,6 @@ impl Destroy {
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[test]
     fn participant() {

parsers/src/mood.rs 🔗

@@ -272,7 +272,6 @@ generate_elem_id!(
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/muc/muc.rs 🔗

@@ -96,7 +96,6 @@ mod tests {
     use super::*;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
     use std::str::FromStr;
 
     #[test]

parsers/src/muc/user.rs 🔗

@@ -12,7 +12,6 @@ use crate::util::error::Error;
 use crate::Element;
 
 use jid::FullJid;
-use std::convert::TryFrom;
 
 generate_attribute_enum!(
 /// Lists all of the possible status codes used in MUC presences.

parsers/src/nick.rs 🔗

@@ -17,7 +17,6 @@ mod tests {
     #[cfg(not(feature = "disable-validation"))]
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/occupant_id.rs 🔗

@@ -28,7 +28,6 @@ mod tests {
     use super::*;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/ping.rs 🔗

@@ -23,7 +23,6 @@ mod tests {
     #[cfg(not(feature = "disable-validation"))]
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[test]
     fn test_size() {

parsers/src/presence.rs 🔗

@@ -10,7 +10,6 @@ use crate::util::error::Error;
 use jid::Jid;
 use minidom::{Element, IntoAttributeValue};
 use std::collections::BTreeMap;
-use std::convert::TryFrom;
 use std::str::FromStr;
 
 /// Should be implemented on every known payload of a `<presence/>`.

parsers/src/pubsub/event.rs 🔗

@@ -12,7 +12,6 @@ use crate::pubsub::{Item as PubSubItem, ItemId, NodeName, Subscription, Subscrip
 use crate::util::error::Error;
 use crate::Element;
 use jid::Jid;
-use std::convert::TryFrom;
 
 /// Event wrapper for a PubSub `<item/>`.
 #[derive(Debug, Clone)]

parsers/src/pubsub/owner.rs 🔗

@@ -12,7 +12,6 @@ use crate::pubsub::{AffiliationAttribute, NodeName, Subscription};
 use crate::util::error::Error;
 use crate::Element;
 use jid::Jid;
-use std::convert::TryFrom;
 
 generate_element!(
     /// A list of affiliations you have on a service, or on a node.

parsers/src/pubsub/pubsub.rs 🔗

@@ -13,7 +13,6 @@ use crate::pubsub::{
 use crate::util::error::Error;
 use crate::Element;
 use jid::Jid;
-use std::convert::TryFrom;
 
 // TODO: a better solution would be to split this into a query and a result elements, like for
 // XEP-0030.

parsers/src/receipts.rs 🔗

@@ -34,7 +34,6 @@ mod tests {
     use crate::ns;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/roster.rs 🔗

@@ -93,7 +93,6 @@ mod tests {
     use super::*;
     use crate::util::error::Error;
     use crate::Element;
-    use std::convert::TryFrom;
     use std::str::FromStr;
 
     #[cfg(target_pointer_width = "32")]

parsers/src/rsm.rs 🔗

@@ -7,7 +7,6 @@
 use crate::ns;
 use crate::util::error::Error;
 use crate::Element;
-use std::convert::TryFrom;
 
 /// Requests paging through a potentially big set of items (represented by an
 /// UID).

parsers/src/rtt.rs 🔗

@@ -8,7 +8,6 @@ use crate::ns;
 use crate::util::error::Error;
 use crate::util::helpers::PlainText;
 use crate::Element;
-use std::convert::TryFrom;
 
 generate_attribute!(
     /// Events for real-time text.
@@ -245,7 +244,6 @@ impl From<Rtt> for Element {
 #[cfg(test)]
 mod tests {
     use super::*;
-    use std::convert::TryInto;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/sasl.rs 🔗

@@ -9,7 +9,6 @@ use crate::util::error::Error;
 use crate::util::helpers::Base64;
 use crate::Element;
 use std::collections::BTreeMap;
-use std::convert::TryFrom;
 
 generate_attribute!(
     /// The list of available SASL mechanisms.
@@ -215,7 +214,6 @@ impl From<Failure> for Element {
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/server_info.rs 🔗

@@ -6,7 +6,6 @@
 use crate::data_forms::{DataForm, DataFormType, Field, FieldType};
 use crate::ns;
 use crate::util::error::Error;
-use std::convert::TryFrom;
 
 /// Structure representing a `http://jabber.org/network/serverinfo` form type.
 #[derive(Debug, Clone, PartialEq, Default)]

parsers/src/sm.rs 🔗

@@ -146,7 +146,6 @@ generate_empty_element!(
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/stanza_error.rs 🔗

@@ -11,7 +11,6 @@ use crate::util::error::Error;
 use crate::Element;
 use jid::Jid;
 use std::collections::BTreeMap;
-use std::convert::TryFrom;
 
 generate_attribute!(
     /// The type of the error.

parsers/src/stanza_id.rs 🔗

@@ -40,7 +40,6 @@ mod tests {
     use crate::util::error::Error;
     use crate::Element;
     use jid::BareJid;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/stream.rs 🔗

@@ -74,7 +74,6 @@ impl Stream {
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/time.rs 🔗

@@ -10,7 +10,6 @@ use crate::ns;
 use crate::util::error::Error;
 use crate::Element;
 use chrono::FixedOffset;
-use std::convert::TryFrom;
 use std::str::FromStr;
 
 generate_empty_element!(

parsers/src/tune.rs 🔗

@@ -8,7 +8,6 @@ use crate::ns;
 use crate::pubsub::PubSubPayload;
 use crate::util::error::Error;
 use crate::Element;
-use std::convert::TryFrom;
 
 generate_elem_id!(
     /// The artist or performer of the song or piece.

parsers/src/version.rs 🔗

@@ -42,7 +42,6 @@ impl IqResultPayload for VersionResult {}
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/websocket.rs 🔗

@@ -73,7 +73,6 @@ impl Open {
 mod tests {
     use super::*;
     use crate::Element;
-    use std::convert::TryFrom;
 
     #[cfg(target_pointer_width = "32")]
     #[test]

parsers/src/xhtml.rs 🔗

@@ -9,7 +9,6 @@ use crate::ns;
 use crate::util::error::Error;
 use minidom::{Element, Node};
 use std::collections::HashMap;
-use std::convert::TryFrom;
 
 // TODO: Use a proper lang type.
 type Lang = String;

sasl/Cargo.toml 🔗

@@ -9,7 +9,7 @@ documentation = "https://docs.rs/sasl"
 readme = "README.md"
 keywords = ["sasl", "authentication"]
 license = "MPL-2.0"
-edition = "2018"
+edition = "2021"
 
 [badges]
 gitlab = { repository = "xmpp-rs/xmpp-rs" }

sasl/src/server/mod.rs 🔗

@@ -14,7 +14,7 @@ macro_rules! impl_validator_using_provider {
                 identity: &$crate::common::Identity,
                 value: &$secret,
             ) -> Result<(), $crate::server::ValidatorError> {
-                if &(self as &$crate::server::Provider<$secret>).provide(identity)? == value {
+                if $crate::server::Provider::<$secret>::provide(self, identity).is_ok() {
                     Ok(())
                 } else {
                     Err($crate::server::ValidatorError::AuthenticationFailed)

tokio-xmpp/Cargo.toml 🔗

@@ -9,7 +9,7 @@ repository = "https://gitlab.com/xmpp-rs/xmpp-rs"
 documentation = "https://docs.rs/tokio-xmpp"
 categories = ["asynchronous", "network-programming"]
 keywords = ["xmpp", "tokio"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 bytes = "1"

tokio-xmpp/examples/echo_bot.rs 🔗

@@ -1,5 +1,4 @@
 use futures::stream::StreamExt;
-use std::convert::TryFrom;
 use std::env::args;
 use std::process::exit;
 use std::str::FromStr;

tokio-xmpp/src/client/auth.rs 🔗

@@ -4,7 +4,6 @@ use sasl::client::Mechanism;
 use sasl::common::scram::{Sha1, Sha256};
 use sasl::common::Credentials;
 use std::collections::HashSet;
-use std::convert::TryFrom;
 use std::str::FromStr;
 use tokio::io::{AsyncRead, AsyncWrite};
 use xmpp_parsers::sasl::{Auth, Challenge, Failure, Mechanism as XMPPMechanism, Response, Success};

tokio-xmpp/src/client/bind.rs 🔗

@@ -1,5 +1,4 @@
 use futures::stream::StreamExt;
-use std::convert::TryFrom;
 use std::marker::Unpin;
 use tokio::io::{AsyncRead, AsyncWrite};
 use xmpp_parsers::bind::{BindQuery, BindResponse};

tokio-xmpp/src/starttls.rs 🔗

@@ -2,7 +2,6 @@ use futures::{sink::SinkExt, stream::StreamExt};
 
 #[cfg(all(feature = "tls-rust", not(feature = "tls-native")))]
 use {
-    std::convert::TryFrom,
     std::sync::Arc,
     tokio_rustls::{
         client::TlsStream,

xmpp/Cargo.toml 🔗

@@ -11,7 +11,7 @@ repository = "https://gitlab.com/xmpp-rs/xmpp-rs"
 keywords = ["xmpp", "jabber", "chat", "messaging", "bot"]
 categories = ["network-programming"]
 license = "MPL-2.0"
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 tokio-xmpp = "3.4"

xmpp/src/lib.rs 🔗

@@ -10,7 +10,6 @@ use futures::stream::StreamExt;
 use reqwest::{
     header::HeaderMap as ReqwestHeaderMap, Body as ReqwestBody, Client as ReqwestClient,
 };
-use std::convert::TryFrom;
 use std::path::{Path, PathBuf};
 use std::sync::{Arc, RwLock};
 use tokio::fs::File;

xmpp/src/pubsub/avatar.rs 🔗

@@ -6,7 +6,6 @@
 
 use super::Agent;
 use crate::Event;
-use std::convert::TryFrom;
 use std::fs::{self, File};
 use std::io::{self, Write};
 use tokio_xmpp::parsers::{

xmpp/src/pubsub/mod.rs 🔗

@@ -6,7 +6,6 @@
 
 use super::Agent;
 use crate::Event;
-use std::convert::TryFrom;
 use std::str::FromStr;
 use tokio_xmpp::parsers::{
     bookmarks2::{Autojoin, Conference},