diff options
| author | Zeyla Hellyer <[email protected]> | 2017-12-16 08:39:36 -0800 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-12-16 08:45:26 -0800 |
| commit | bcd16dddb8cc3086a13524c79676f3a8bebbc524 (patch) | |
| tree | 42d254fb4738df957c4b7d9e5766d1cb5bd47323 /src/utils | |
| parent | Fix guild deserialization tests (diff) | |
| download | serenity-bcd16dddb8cc3086a13524c79676f3a8bebbc524.tar.xz serenity-bcd16dddb8cc3086a13524c79676f3a8bebbc524.zip | |
Break up the model module
The `model` module has historically been one giant module re-exporting
all of the model types, which is somewhere around 100 types. This can be
a lot to look at for a new user and somewhat overwhelming, especially
with a large number of fine-grained imports from the module.
The module is now neatly split up into submodules, mostly like it has
been internally since the early versions of the library. The submodules
are:
- application
- channel
- error
- event
- gateway
- guild
- id
- invite
- misc
- permissions
- prelude
- user
- voice
- webhook
Each submodule contains types that are "owned" by the module. For
example, the `guild` submodule contains, but not limited to, Emoji,
AuditLogsEntry, Role, and Member. `channel` contains, but not limited
to, Attachment, Embed, Message, and Reaction.
Upgrade path:
Instead of glob importing the models via `use serenity::model::*;`,
instead glob import via the prelude:
```rust
use serenity::model::prelude::*;
```
Instead of importing from the root model module:
```rust
use serenity::model::{Guild, Message, OnlineStatus, Role, User};
```
instead import from the submodules like so:
```rust
use serenity::model::channel::Message;
use serenity::model::guild::{Guild, Role};
use serenity::model::user::{OnlineStatus, User};
```
Diffstat (limited to 'src/utils')
| -rw-r--r-- | src/utils/colour.rs | 7 | ||||
| -rw-r--r-- | src/utils/message_builder.rs | 13 | ||||
| -rw-r--r-- | src/utils/mod.rs | 6 |
3 files changed, 17 insertions, 9 deletions
diff --git a/src/utils/colour.rs b/src/utils/colour.rs index 4e612cc..c59f4be 100644 --- a/src/utils/colour.rs +++ b/src/utils/colour.rs @@ -28,8 +28,9 @@ macro_rules! colour { /// via [`g`]: /// /// ```rust -/// # use serenity::model::{Role, RoleId, permissions}; -/// use serenity::utils::Colour; +/// # use serenity::model::guild::Role; +/// # use serenity::model::id::RoleId; +/// # use serenity::model::permissions; /// # /// # let role = Role { /// # colour: Colour::blurple(), @@ -41,6 +42,8 @@ macro_rules! colour { /// # permissions: permissions::PRESET_GENERAL, /// # position: 7, /// # }; +/// # +/// use serenity::utils::Colour; /// /// // assuming a `role` has already been bound /// diff --git a/src/utils/message_builder.rs b/src/utils/message_builder.rs index 79b6123..f94b3fd 100644 --- a/src/utils/message_builder.rs +++ b/src/utils/message_builder.rs @@ -1,4 +1,6 @@ -use model::{ChannelId, Emoji, Mentionable, RoleId, UserId}; +use model::guild::Emoji; +use model::id::{ChannelId, RoleId, UserId}; +use model::misc::Mentionable; use std::default::Default; use std::fmt::{self, Display, Write}; use std::ops::Add; @@ -14,7 +16,7 @@ use std::ops::Add; /// value: /// /// ```rust,no_run -/// # use serenity::model::{Emoji, EmojiId, UserId}; +/// # use serenity::model::prelude::*; /// # /// # let user = UserId(1); /// # let emoji = Emoji { @@ -68,7 +70,7 @@ impl MessageBuilder { /// and finally building it to retrieve the inner String: /// /// ```rust - /// use serenity::model::ChannelId; + /// use serenity::model::id::ChannelId; /// use serenity::utils::MessageBuilder; /// /// let channel_id = ChannelId(81384788765712384); @@ -105,7 +107,7 @@ impl MessageBuilder { /// Mentioning a [`Channel`] by Id: /// /// ```rust - /// use serenity::model::ChannelId; + /// use serenity::model::id::ChannelId; /// use serenity::utils::MessageBuilder; /// /// let channel_id = ChannelId(81384788765712384); @@ -138,7 +140,8 @@ impl MessageBuilder { /// Mention an emoji in a message's content: /// /// ```rust - /// use serenity::model::{Emoji, EmojiId}; + /// use serenity::model::guild::Emoji; + /// use serenity::model::id::EmojiId; /// use serenity::utils::MessageBuilder; /// /// let emoji = Emoji { diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 6291f81..2660798 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -13,7 +13,8 @@ pub use super::builder; use base64; use internal::prelude::*; -use model::{EmojiId, EmojiIdentifier}; +use model::id::EmojiId; +use model::misc::EmojiIdentifier; use std::collections::HashMap; use std::ffi::OsStr; use std::fs::File; @@ -267,7 +268,8 @@ pub fn parse_channel(mention: &str) -> Option<u64> { /// Ensure that a valid [`Emoji`] usage is correctly parsed: /// /// ```rust -/// use serenity::model::{EmojiId, EmojiIdentifier}; +/// use serenity::model::id::{EmojiId, GuildId}; +/// use serenity::model::misc::EmojiIdentifier; /// use serenity::utils::parse_emoji; /// /// let expected = EmojiIdentifier { |