You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: update.rs
    path of file: ./repos/telexide/src/model
    
    the code of the file until where you have to start completion: use super::{
    raw::RawUpdate,
    CallbackQuery,
    ChatJoinRequest,
    ChatMemberUpdated,
    ChosenInlineResult,
    InlineQuery,
    Message,
    Poll,
    PollAnswer,
    PreCheckoutQuery,
    ShippingQuery,
};
use serde::{Deserialize, Deserializer, Serialize, Serializer};

/// This object represents an incoming update
#[derive(Debug, Clone, PartialEq)]
pub struct Update {
    /// The update‘s unique identifier. Update identifiers start from a certain
    /// positive number and increase sequentially. This ID becomes
    /// especially handy if you’re using Webhooks, since it allows you to
    /// ignore repeated updates or to restore the correct update sequence,
    /// should they get out of order. If there are no new updates for at least a
    /// week, then identifier of the next update will be chosen randomly
    /// instead of sequentially.
    pub update_id: i64,
    /// The content of the incoming update
    pub content: UpdateContent,
}

/// The content of an [`Update`]
#[allow(clippy::large_enum_variant)] // Using a box makes it more user-unfriendly
#[derive(Debug, Clone, PartialEq)]
pub enum UpdateContent 
    
    fn from(raw: RawUpdate) -> Update {
        let update_id = raw.update_id;
        let make_update = |content: UpdateContent| Self {
            update_id,
            content,
        };

        macro_rules! set_content {
            ($data:expr, $kind:ident) => {
                if let Some(c) = $data {
                    return make_update(UpdateContent::$kind(c.into()));
                }
            };
        }

        set_content!(raw.message, Message);
        set_content!(raw.edited_message, EditedMessage);
        set_content!(raw.channel_post, ChannelPost);
        set_content!(raw.edited_channel_post, EditedChannelPost);
        set_content!(raw.inline_query, InlineQuery);
        set_content!(raw.chosen_inline_result, ChosenInlineResult);
        set_content!(raw.callback_query, CallbackQuery);
        set_content!(raw.shipping_query, ShippingQuery);
        set_content!(raw.pre_checkout_query, PreCheckoutQuery);
        set_content!(raw.poll, Poll);
        set_content!(raw.poll_answer, PollAnswer);
        set_content!(raw.my_chat_member, MyChatMember);
        set_content!(raw.chat_member, ChatMember);
        set_content!(raw.chat_join_request, ChatJoinRequest);

        make_update(UpdateContent::Unknown)
    }