Explain this function:

fn startup_message() {
    let messages: Vec<&str> = vec![
        "the editor of all time", // not the best editor, just the editor
        "shut up and edit",
        "the nonstandard text editor",
        "it's pronounced \"soo-ed\"",
        "sued as in editor, not as in law",
        "sued, man! ~run man sued",
        "there is no visual mode",
        "the itor fell off", // implying it was "sueditor" before "itor" fell off, becoming "sued"
        "the ultimate blank slate",
        "words matter; nothing else does",
        "the text editor that doesn't care",
        "write like no one is watching, because they're not",
        "syntax? never heard of them",
        "what you get is what you get",
        "what the frick is a config file",
        "a non-extensible, uncustomisable but still free/libre editor",
        "text is stored in the balls", // just a funny phrase, doesn't mean anything
        "want to configure? learn rust",
        "good luck figuring out how to exit",
        "sublime is temporary, sued is eternal",
        "you are on your own. good luck",
        "back in the day they charged for stuff like this",
        "no cursor keys, no need to worry about emacs pinky",
        "the control key is only used in emergencies",
        "no need for an evil-mode, sued is evil enough",
        "no config file means no config bankruptcy",
        "if vim is evil, sued is demonic",
        "free software, hell yeah",
    ];
    let message: &str = messages[rand::thread_rng().gen_range(0..messages.len())];
    println!("sued - {message}\ntype ~ for commands, otherwise just start typing");
}