aboutsummaryrefslogtreecommitdiff
path: root/src/builder
diff options
context:
space:
mode:
authoracdenisSK <[email protected]>2018-01-02 18:34:27 +0100
committeracdenisSK <[email protected]>2018-01-02 18:34:27 +0100
commit26fe139363a847542bbe609fe4d15accbf4fef14 (patch)
treee0f0bbcb1d70b9905235366e86c21acac49dadd9 /src/builder
parentRemove builder re-export in utils (diff)
downloadserenity-26fe139363a847542bbe609fe4d15accbf4fef14.tar.xz
serenity-26fe139363a847542bbe609fe4d15accbf4fef14.zip
Move `VecMap` to `utils`
This also fixes no-builder compilation
Diffstat (limited to 'src/builder')
-rw-r--r--src/builder/create_embed.rs2
-rw-r--r--src/builder/create_invite.rs2
-rw-r--r--src/builder/create_message.rs4
-rw-r--r--src/builder/edit_channel.rs2
-rw-r--r--src/builder/edit_guild.rs2
-rw-r--r--src/builder/edit_member.rs2
-rw-r--r--src/builder/edit_profile.rs2
-rw-r--r--src/builder/edit_role.rs2
-rw-r--r--src/builder/execute_webhook.rs2
-rw-r--r--src/builder/get_messages.rs2
-rw-r--r--src/builder/mod.rs2
-rw-r--r--src/builder/vec_map.rs120
12 files changed, 11 insertions, 133 deletions
diff --git a/src/builder/create_embed.rs b/src/builder/create_embed.rs
index fa8e12b..07f803a 100644
--- a/src/builder/create_embed.rs
+++ b/src/builder/create_embed.rs
@@ -22,7 +22,7 @@ use serde_json::Value;
use std::default::Default;
use std::fmt::Display;
use utils;
-use super::VecMap;
+use utils::VecMap;
#[cfg(feature = "utils")]
use utils::Colour;
diff --git a/src/builder/create_invite.rs b/src/builder/create_invite.rs
index 1e8a7b7..b3344cc 100644
--- a/src/builder/create_invite.rs
+++ b/src/builder/create_invite.rs
@@ -1,7 +1,7 @@
use internal::prelude::*;
use serde_json::Value;
use std::default::Default;
-use super::VecMap;
+use utils::VecMap;
/// A builder to create a [`RichInvite`] for use via [`GuildChannel::create_invite`].
///
diff --git a/src/builder/create_message.rs b/src/builder/create_message.rs
index 4e1bd4b..2a89c0b 100644
--- a/src/builder/create_message.rs
+++ b/src/builder/create_message.rs
@@ -1,8 +1,8 @@
use internal::prelude::*;
use model::channel::ReactionType;
use std::fmt::Display;
-use super::{CreateEmbed, VecMap};
-use utils;
+use super::CreateEmbed;
+use utils::{self, VecMap};
/// A builder to specify the contents of an [`http::send_message`] request,
/// primarily meant for use through [`ChannelId::send_message`].
diff --git a/src/builder/edit_channel.rs b/src/builder/edit_channel.rs
index fca9a51..17df18d 100644
--- a/src/builder/edit_channel.rs
+++ b/src/builder/edit_channel.rs
@@ -1,5 +1,5 @@
use internal::prelude::*;
-use super::VecMap;
+use utils::VecMap;
/// A builder to edit a [`GuildChannel`] for use via [`GuildChannel::edit`]
///
diff --git a/src/builder/edit_guild.rs b/src/builder/edit_guild.rs
index bb03c53..ee6bce6 100644
--- a/src/builder/edit_guild.rs
+++ b/src/builder/edit_guild.rs
@@ -1,6 +1,6 @@
use internal::prelude::*;
use model::prelude::*;
-use super::VecMap;
+use utils::VecMap;
/// A builder to optionally edit certain fields of a [`Guild`]. This is meant
/// for usage with [`Guild::edit`].
diff --git a/src/builder/edit_member.rs b/src/builder/edit_member.rs
index f5bf2e4..efc9fb9 100644
--- a/src/builder/edit_member.rs
+++ b/src/builder/edit_member.rs
@@ -1,6 +1,6 @@
use internal::prelude::*;
use model::id::{ChannelId, RoleId};
-use super::VecMap;
+use utils::VecMap;
/// A builder which edits the properties of a [`Member`], to be used in
/// conjunction with [`Member::edit`].
diff --git a/src/builder/edit_profile.rs b/src/builder/edit_profile.rs
index efa682f..e27fb92 100644
--- a/src/builder/edit_profile.rs
+++ b/src/builder/edit_profile.rs
@@ -1,5 +1,5 @@
use internal::prelude::*;
-use super::VecMap;
+use utils::VecMap;
/// A builder to edit the current user's settings, to be used in conjunction
/// with [`CurrentUser::edit`].
diff --git a/src/builder/edit_role.rs b/src/builder/edit_role.rs
index 059653d..54511ec 100644
--- a/src/builder/edit_role.rs
+++ b/src/builder/edit_role.rs
@@ -1,7 +1,7 @@
use internal::prelude::*;
use model::guild::Role;
use model::Permissions;
-use super::VecMap;
+use utils::VecMap;
/// A builer to create or edit a [`Role`] for use via a number of model methods.
///
diff --git a/src/builder/execute_webhook.rs b/src/builder/execute_webhook.rs
index c7d7915..26600ef 100644
--- a/src/builder/execute_webhook.rs
+++ b/src/builder/execute_webhook.rs
@@ -1,6 +1,6 @@
use serde_json::Value;
use std::default::Default;
-use super::VecMap;
+use utils::VecMap;
/// A builder to create the inner content of a [`Webhook`]'s execution.
///
diff --git a/src/builder/get_messages.rs b/src/builder/get_messages.rs
index 8b34728..01003f6 100644
--- a/src/builder/get_messages.rs
+++ b/src/builder/get_messages.rs
@@ -1,5 +1,5 @@
use model::id::MessageId;
-use super::VecMap;
+use utils::VecMap;
/// Builds a request for a request to the API to retrieve messages.
///
diff --git a/src/builder/mod.rs b/src/builder/mod.rs
index adb44a1..3c59c0d 100644
--- a/src/builder/mod.rs
+++ b/src/builder/mod.rs
@@ -15,9 +15,7 @@ mod edit_profile;
mod edit_role;
mod execute_webhook;
mod get_messages;
-mod vec_map;
-pub use self::vec_map::VecMap;
pub use self::create_embed::{CreateEmbed, CreateEmbedAuthor, CreateEmbedFooter};
pub use self::create_invite::CreateInvite;
pub use self::create_message::CreateMessage;
diff --git a/src/builder/vec_map.rs b/src/builder/vec_map.rs
deleted file mode 100644
index 786bf14..0000000
--- a/src/builder/vec_map.rs
+++ /dev/null
@@ -1,120 +0,0 @@
-// Most of this is
-// shamelessly copied from https://github.com/hyperium/hyper/blob/master/src/header/internals/vec_map.rs
-
-/// Like `HashMap` but solely uses a vector instead.
-///
-/// note: This is for internal use.
-#[derive(Clone, Debug, Default)]
-pub struct VecMap<K, V>(Vec<(K, V)>);
-
-impl<K: PartialEq, V> VecMap<K, V> {
- pub fn new() -> Self {
- VecMap(Vec::new())
- }
-
- pub fn with_capacity(cap: usize) -> Self {
- VecMap(Vec::with_capacity(cap))
- }
-
- #[inline]
- pub fn insert(&mut self, key: K, value: V) {
- self.0.push((key, value));
- }
-
- pub fn remove<Q: ?Sized + PartialEq<K>>(&mut self, key: &Q) -> Option<V> {
- self.pos(key).map(|pos| self.0.remove(pos)).map(|entry| entry.1)
- }
-
- pub fn entry(&mut self, key: K) -> Entry<K, V> {
- match self.pos(&key) {
- Some(pos) => Entry::Occupied(OccupiedEntry {
- vec: &mut self.0,
- pos: pos,
- }),
- None => Entry::Vacant(VacantEntry {
- vec: &mut self.0,
- key: key,
- })
- }
- }
-
- pub fn get<Q: PartialEq<K> + ?Sized>(&self, key: &Q) -> Option<&V> {
- self.iter().find(|entry| key == &entry.0).map(|entry| &entry.1)
- }
-
- #[inline]
- pub fn iter(&self) -> ::std::slice::Iter<(K, V)> {
- self.into_iter()
- }
-
- fn pos<Q: PartialEq<K> + ?Sized>(&self, key: &Q) -> Option<usize> {
- self.iter().position(|entry| key == &entry.0)
- }
-}
-
-impl<K, V> IntoIterator for VecMap<K, V> {
- type Item = (K, V);
- type IntoIter = ::std::vec::IntoIter<(K, V)>;
-
- fn into_iter(self) -> Self::IntoIter {
- self.0.into_iter()
- }
-}
-
-impl<'a, K, V> IntoIterator for &'a VecMap<K, V> {
- type Item = &'a (K, V);
- type IntoIter = ::std::slice::Iter<'a, (K, V)>;
-
- fn into_iter(self) -> Self::IntoIter {
- self.0.iter()
- }
-}
-
-pub enum Entry<'a, K: 'a, V: 'a> {
- Vacant(VacantEntry<'a, K, V>),
- Occupied(OccupiedEntry<'a, K, V>)
-}
-
-impl<'a, K, V> Entry<'a, K, V> {
- pub fn or_insert(self, val: V) -> &'a mut V {
- use self::Entry::*;
-
- match self {
- Vacant(entry) => entry.insert(val),
- Occupied(entry) => entry.into_mut(),
- }
- }
-
- pub fn or_insert_with<F: FnOnce() -> V>(self, val: F) -> &'a mut V {
- use self::Entry::*;
-
- match self {
- Vacant(entry) => entry.insert(val()),
- Occupied(entry) => entry.into_mut(),
- }
- }
-}
-
-pub struct VacantEntry<'a, K: 'a, V: 'a> {
- vec: &'a mut Vec<(K, V)>,
- key: K,
-}
-
-impl<'a, K, V> VacantEntry<'a, K, V> {
- pub fn insert(self, val: V) -> &'a mut V {
- self.vec.push((self.key, val));
- let pos = self.vec.len() - 1;
- &mut self.vec[pos].1
- }
-}
-
-pub struct OccupiedEntry<'a, K: 'a, V: 'a> {
- vec: &'a mut Vec<(K, V)>,
- pos: usize,
-}
-
-impl<'a, K, V> OccupiedEntry<'a, K, V> {
- pub fn into_mut(self) -> &'a mut V {
- &mut self.vec[self.pos].1
- }
-} \ No newline at end of file