Enum ServerMessage

Source
#[non_exhaustive]
pub enum ServerMessage {
Show 14 variants ClearChat(ClearChatMessage), ClearMsg(ClearMsgMessage), GlobalUserState(GlobalUserStateMessage), Join(JoinMessage), Notice(NoticeMessage), Part(PartMessage), Ping(PingMessage), Pong(PongMessage), Privmsg(PrivmsgMessage), Reconnect(ReconnectMessage), RoomState(RoomStateMessage), UserNotice(UserNoticeMessage), UserState(UserStateMessage), Whisper(WhisperMessage),
}
Expand description

An IRCMessage that has been parsed into a more concrete type based on its command.

This type is non-exhausive, because more types of commands exist and can be added.

If you wish to (manually) parse a type of command that is not already parsed by this library, use IRCMessage::from to convert the ServerMessage back to an IRCMessage, then check the message’s command and perform your parsing.

There is intentionally no generic Unparsed variant here. If there was, and the library added parsing for the command you were trying to catch by matching against the Unparsed variant, your code would be broken without any compiler error.

§Examples

use twitch_irc::message::{IRCMessage, ServerMessage};
use std::convert::TryFrom;

let irc_message = IRCMessage::parse(":tmi.twitch.tv PING").unwrap();
let server_message = ServerMessage::try_from(irc_message).unwrap();

match server_message {
    // match against known types first
    ServerMessage::Ping { .. } => println!("Got pinged!"),
    rest => {
        // can do manual parsing here
        let irc_message = IRCMessage::from(rest);
        if irc_message.command == "CUSTOMCMD" {
             // ...
        }
    }
}

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

ClearChat(ClearChatMessage)

CLEARCHAT message

§

ClearMsg(ClearMsgMessage)

CLEARMSG message

§

GlobalUserState(GlobalUserStateMessage)

GLOBALUSERSTATE message

§

Join(JoinMessage)

JOIN message

§

Notice(NoticeMessage)

NOTICE message

§

Part(PartMessage)

PART message

§

Ping(PingMessage)

PING message

§

Pong(PongMessage)

PONG message

§

Privmsg(PrivmsgMessage)

PRIVMSG message

§

Reconnect(ReconnectMessage)

RECONNECT message

§

RoomState(RoomStateMessage)

ROOMSTATE message

§

UserNotice(UserNoticeMessage)

USERNOTICE message

§

UserState(UserStateMessage)

USERSTATE message

§

Whisper(WhisperMessage)

WHISPER message

Implementations§

Source§

impl ServerMessage

Source

pub fn source(&self) -> &IRCMessage

Get a reference to the IRCMessage this ServerMessage was parsed from.

Trait Implementations§

Source§

impl AsRawIRC for ServerMessage

Source§

fn format_as_raw_irc(&self, f: &mut Formatter<'_>) -> Result

Writes the raw IRC message to the given formatter.
Source§

fn as_raw_irc(&self) -> String
where Self: Sized,

Creates a new string with the raw IRC message. Read more
Source§

impl Clone for ServerMessage

Source§

fn clone(&self) -> ServerMessage

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ServerMessage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for ServerMessage

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<ServerMessage> for IRCMessage

Source§

fn from(msg: ServerMessage) -> IRCMessage

Converts to this type from the input type.
Source§

impl Serialize for ServerMessage

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<IRCMessage> for ServerMessage

Source§

type Error = ServerMessageParseError

The type returned in the event of a conversion error.
Source§

fn try_from( source: IRCMessage, ) -> Result<ServerMessage, ServerMessageParseError>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T