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: class_dialog_rules.rs
    path of file: ./repos/szyszka/src/gui_data_things
    
    the code of the file until where you have to start completion: use crate::fls;
use gtk4::prelude::*;
use gtk4::{Button, Entry, Label, Widget};

use crate::gui_data_things::class_d
    
    pub fn update_language(&self) {
        self.button_rule_window_add.set_label(&fls!("button_rule_window_add"));
        self.label_example.set_label(&fls!("label_example"));
        self.label_example_text_before.set_label(&fls!("label_example_text_before"));
        self.label_example_text_after.set_label(&fls!("label_example_text_after"));

        let vec_children: Vec<Widget> = get_all_direct_children(&self.notebook_choose_rule);
        let vec_children: Vec<Widget> = get_all_direct_children(&vec_children[1]);

        for (main_enum, fl_thing) in [
            (NotebookRules::Custom as usize, fls!("notebook_tab_custom")),
            (NotebookRules::UpperLowerCases as usize, fls!("notebook_tab_case_size")),
            (NotebookRules::Purge as usize, fls!("notebook_tab_purge")),
            (NotebookRules::AddNumber as usize, fls!("notebook_tab_add_number")),
            (NotebookRules::AddText as usize, fls!("notebook_tab_add_text")),
            (NotebookRules::Replace as usize, fls!("notebook_tab_replace")),
            (NotebookRules::Trim as usize, fls!("notebook_tab_trim")),
            (NotebookRules::Normalize as usize, fls!("notebook_tab_normalize")),
        ] {
            self.notebook_choose_rule
                .tab_label(&vec_children[main_enum])
                .unwrap()
                .downcast::<Label>()
                .unwrap()
                .set_text(&fl_thing);
        }
    }