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: abbr.rs
    path of file: ./repos/fish-shell/src/builtins
    
    the code of the file until where you have to start completion: use super::prelude::*;
use crate::abbrs::{self, Abbreviation, Position};
use crate::common::{escape, escape_string, valid_func_name, EscapeStringStyle};
use crate::env::{EnvMode, EnvStackSetResult};
use crate::re::{regex_make_anchored, to_boxed_chars};
use pcre2::utf32::{Regex, RegexBuilder};

const CMD: &wstr = L!("abbr");

#[derive(Default, Debug)]
struct Options {
    add: bool,
    rename: bool,
    show: bool,
    list: bool,
    erase: bool,
    query: bool,
    function: Option<WString>,
    regex_pattern: Option<WString>,
    position
    
fn abbr_list(opts: &Options, streams: &mut IoStreams) -> Option<c_int> {
    const subcmd: &wstr = L!("--list");
    if !opts.args.is_empty() {
        streams.err.append(wgettext_fmt!(
            "%ls %ls: Unexpected argument -- '%ls'\n",
            CMD,
            subcmd,
            &opts.args[0]
        ));
        return STATUS_INVALID_ARGS;
    }
    abbrs::with_abbrs(|abbrs| {
        for abbr in abbrs.list() {
            let mut name = abbr.name.clone();
            name.push('\n');
            streams.out.append(name);
        }
    });

    return STATUS_CMD_OK;
}