diff options
| author | zeyla <[email protected]> | 2018-07-09 16:08:27 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-07-09 16:08:27 -0700 |
| commit | e6026308b33c80aa33f0001c89cd271cc5cb6687 (patch) | |
| tree | 2f8f50244c4d7a1234922fef61a72eb8dddbf4c5 /src/cache/settings.rs | |
| parent | Remove deprecated use of Colour associated methods (diff) | |
| download | serenity-e6026308b33c80aa33f0001c89cd271cc5cb6687.tar.xz serenity-e6026308b33c80aa33f0001c89cd271cc5cb6687.zip | |
Add a message cache API (#345)
This adds an API for message caching. By default this caches 0 messages per
channel.
This can be customized when instantiating:
```rust
use serenity::cache::{Cache, Settings};
let mut settings = Settings::new();
// Cache 10 messages per channel.
settings.max_messages(10);
let cache = Cache::new_with_settings(settings);
```
After instantiation:
```rust
use serenity::cache::Cache;
let mut cache = Cache::new();
cache.settings_mut().max_messages(10);
```
And during runtime through the global cache:
```rust
use serenity::CACHE;
CACHE.write().settings_mut().max_messages(10);
```
Diffstat (limited to 'src/cache/settings.rs')
| -rw-r--r-- | src/cache/settings.rs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/cache/settings.rs b/src/cache/settings.rs new file mode 100644 index 0000000..e8e456b --- /dev/null +++ b/src/cache/settings.rs @@ -0,0 +1,50 @@ +/// Settings for the cache.
+///
+/// # Examples
+///
+/// Create new settings, specifying the maximum number of messages:
+///
+/// ```rust
+/// use serenity::cache::Settings as CacheSettings;
+///
+/// let mut settings = CacheSettings::new();
+/// settings.max_messages(10);
+/// ```
+#[derive(Clone, Debug, Default)]
+pub struct Settings {
+ /// The maximum number of messages to store in a channel's message cache.
+ ///
+ /// Defaults to 0.
+ pub max_messages: usize,
+ __nonexhaustive: (),
+}
+
+impl Settings {
+ /// Creates new settings to be used with a cache.
+ #[inline]
+ pub fn new() -> Self {
+ Self::default()
+ }
+
+ /// Sets the maximum number of messages to cache in a channel.
+ ///
+ /// Refer to [`max_messages`] for more information.
+ ///
+ /// # Examples
+ ///
+ /// Set the maximum number of messages to cache:
+ ///
+ /// ```rust
+ /// use serenity::cache::Settings;
+ ///
+ /// let mut settings = Settings::new();
+ /// settings.max_messages(10);
+ /// ```
+ ///
+ /// [`max_messages`]: #structfield.max_messages
+ pub fn max_messages(&mut self, max: usize) -> &mut Self {
+ self.max_messages = max;
+
+ self
+ }
+}
|