#[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), // some variants omitted
}
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

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

Trait Implementations

Writes the raw IRC message to the given formatter.
Creates a new string with the raw IRC message. Read more
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Deserialize this value from the given Serde deserializer. Read more
Converts to this type from the input type.
Serialize this value into the given Serde serializer. Read more
The type returned in the event of a conversion error.
Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

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

Calls U::from(self).

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

Should always be Self
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more