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: static_list.rs
    path of file: ./repos/vizia/examples/lists
    
    the code of the file until where you have to start completion: use lazy_static::lazy_static;

use vizia::prelude::*;
use vizia_core::binding::StaticLens;

lazy_static! {
    pub static ref STATIC_LIST: Vec<u32> = (20..24).collect();
}

#[derive(Lens)]
pub struct AppData {
    selected: usize,
}

#[derive(Debug)]
pub enum AppEvent {
    Select(usize),
    IncrementSelection,
    DecrementSelection,
}

impl Model for AppData {
    // Intercept list events from the list view to modify t
    
fn main() {
    Application::new(|cx| {
        cx.add_stylesheet(include_style!("../resources/themes/list_style.css"))
            .expect("Failed to add stylesheet");

        AppData { selected: 0 }.build(cx);

        VStack::new(cx, move |cx| {
            List::new(cx, StaticLens::new(STATIC_LIST.as_ref()), move |cx, index, item| {
                VStack::new(cx, move |cx| {
                    Label::new(cx, item)
                        .class("list_item")
                        // Set the checked state based on whether this item is selected
                        .checked(AppData::selected.map(move |selected| *selected == index))
                        // Set the selected item to this one if pressed
                        .on_press(move |cx| cx.emit(AppEvent::Select(index)));
                });
            })
            .on_increment(move |cx| cx.emit(AppEvent::IncrementSelection))
            .on_decrement(move |cx| cx.emit(AppEvent::DecrementSelection));

            Binding::new(cx, AppData::selected, move |cx, selected_item| {
                Label::new(cx, &format!("You have selected: {}", selected_item.get(cx),));
            });
        })
        .class("container");
    })
    .title("Static List")
    .run();
}