From 0f41ffc811827fdd45e4e631884909e33fa8769e Mon Sep 17 00:00:00 2001 From: Zeyla Hellyer Date: Tue, 25 Apr 2017 15:48:13 -0700 Subject: Make `User.discriminator` a u16 Change the User struct's `discriminator` field to a u16 for performance. The User struct's `discriminator` field was previously a u16 but changed to a `String` for ease-of-use. Lately the library has been gearing more towards performance where possible while not sacrificing ergonomics _too much_ in most scenarios. --- src/model/guild/mod.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/model/guild') diff --git a/src/model/guild/mod.rs b/src/model/guild/mod.rs index bd9a7ee..0daeec1 100644 --- a/src/model/guild/mod.rs +++ b/src/model/guild/mod.rs @@ -686,12 +686,13 @@ impl Guild { /// /// [`Member`]: struct.Member.html pub fn member_named(&self, name: &str) -> Option<&Member> { - let hash_pos = name.find('#'); - - let (name, discrim) = if let Some(pos) = hash_pos { + let (name, discrim) = if let Some(pos) = name.find('#') { let split = name.split_at(pos); - (split.0, Some(split.1)) + match split.1.parse::() { + Ok(discrim_int) => (split.0, Some(discrim_int)), + Err(_) => (name, None), + } } else { (&name[..], None) }; -- cgit v1.2.3