1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
use appscraps_dll_error::Result as FuncResult;
use appscraps_dll_error::WrapErr;
use appscraps_static::ENVIRONMENT;
use serde_json;
use serialization::LoadedModule;

#[no_mangle]
pub extern fn get_module_list() -> FuncResult<String> {
    let environment = try!(ENVIRONMENT.get().wrap_err_to_err());
    let module_list = environment.get_module_list();

    let mut result = Vec::new();
    for module in module_list {
        let loaded_module = LoadedModule::new(module.get_index(), module.get_name().clone());
        result.push(loaded_module);
    }

    let result = try!(serde_json::to_string(&result).wrap_err_to_err());
    Ok(result)
}