abstreet/rustdoc/search-index.js

40 lines
941 KiB
JavaScript
Raw Normal View History

var searchIndex = JSON.parse('{\
"abstio":{"doc":"A/B Street organizes data files in a particular way. This …","i":[[0,"io_native","abstio","Normal file IO using the filesystem",null,null],[5,"file_exists","abstio::io_native","",null,[[["asref",8],["str",15]],["bool",15]]],[5,"list_dir","","Returns full paths",null,[[["string",3]],[["vec",3],["string",3]]]],[5,"slurp_file","","",null,[[["asref",8],["str",15]],[["result",6],["vec",3]]]],[5,"inner_slurp_file","","",null,[[["str",15]],[["result",6],["vec",3]]]],[5,"maybe_read_binary","","",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"maybe_write_json","","",null,[[["str",15]],["result",6]]],[5,"write_json","","",null,[[["string",3]]]],[5,"maybe_write_binary","","",null,[[["str",15]],["result",6]]],[5,"write_binary","","",null,[[["string",3]]]],[5,"delete_file","","Idempotent",null,[[["asref",8],["str",15]]]],[3,"FileWithProgress","","",null,null],[12,"inner","","",0,null],[12,"path","","",0,null],[12,"processed_bytes","","",0,null],[12,"total_bytes","","",0,null],[12,"started_at","","",0,null],[12,"last_printed_at","","",0,null],[11,"new","","Also hands back a callback that\'ll add the final result …",0,[[["str",15]],["result",6]]],[0,"download","abstio","",null,null],[5,"download_bytes","abstio::download","Downloads bytes from a URL, printing progress to STDOUT. …",null,[[["asref",8],["str",15]]]],[5,"download_to_file","","Downloads a file, printing progress to STDOUT. This must …",null,[[["asref",8],["str",15]]]],[0,"abst_data","abstio","",null,null],[3,"Manifest","abstio::abst_data","A list of all canonical data files for A/B Street that\'re …",null,null],[12,"entries","","Keyed by path, starting with \\\"data/\\\"",1,null],[3,"Entry","","A single file",null,null],[12,"checksum","","md5sum of the file",2,null],[12,"uncompressed_size_bytes","","Uncompressed size in bytes. Because we have some massive …",2,null],[12,"compressed_size_bytes","","Compressed size in bytes",2,null],[11,"load","","",1,[[],["manifest",3]]],[11,"filter","","Removes entries from the Manifest to match the DataPacks …",1,[[["datapacks",3]],["manifest",3]]],[11,"is_file_part_of_huge_seattle","","Because there are so many Seattle maps and they\'re …",1,[[["str",15]],["bool",15]]],[3,"DataPacks","","Player-chosen groups of files to opt into downloading",null,null],[12,"runtime","","A list of cities to download for using in A/B Street. …",3,null],[12,"input","","A list of cities to download for running the map importer.",3,null],[11,"load_or_create","","Load the player\'s config for what files to download, or …",3,[[],["datapacks",3]]],[11,"save","","Saves the player\'s config for what files to download.",3,[[]]],[0,"abst_paths","abstio","Generate paths for different A/B Street files",null,null],[3,"ROOT_DIR","abstio::abst_paths","",null,null],[12,"__private_field","","",4,null],[3,"ROOT_PLAYER_DIR","","",null,null],[12,"__private_field","","",5,null],[5,"path","","",null,[[["asref",8],["str",15]],["string",3]]],[3,"CityName","","A single city is identified using this.",null,null],[12,"country","","A two letter lowercase country code, from …",6,null],[12,"city","","The name of the city, in filename-friendly form -- for …",6,null],[11,"new","","Create a CityName from a country code and city.",6,[[["str",15]],["cityname",3]]],[11,"seattle","","Convenient constructor for the main city of the game.",6,[[],["cityname",3]]],[11,"list_all_cities_from_system_data","","Returns all city names based on system data.",6,[[],[["cityname",3],["vec",3]]]],[11,"list_all_cities_from_importer_config","","Returns all city names based on importer config.",6,[[],[["cityname",3],["vec",3]]]],[11,"parse","","Parses a CityName from something like \\\"gb/london\\\"; the …",6,[[["str",15]],[["result",6],["cityname",3]]]],[11,"to_path","","Expresses the city as a path, like \\\"gb/london\\\"; the …",6,[[],["string",3]]],[11,"describe","","Stringify the city name for debug messages. Don\'t …",6,[[],["string",3]]],[11,"input_path","","Constructs the path to some city-scoped data/input.",6,[[["asref",8],[
"abstutil":{"doc":"The contents of this crate need to be organized better:","i":[[0,"cli","abstutil","",null,null],[3,"CmdArgs","abstutil::cli","Yet another barebones command-line flag parsing library.",null,null],[12,"kv","","",0,null],[12,"bits","","",0,null],[12,"free","","",0,null],[12,"used","","",0,null],[11,"new","","On native, initialize with real flags. On web, transform …",0,[[],["cmdargs",3]]],[11,"from_args","","",0,[[["vec",3],["string",3]],["cmdargs",3]]],[11,"required","","",0,[[["str",15]],["string",3]]],[11,"optional","","",0,[[["str",15]],[["string",3],["option",4]]]],[11,"optional_parse","","",0,[[["fn",8],["str",15]],["option",4]]],[11,"true_false","","",0,[[["str",15]],["bool",15]]],[11,"enabled","","",0,[[["str",15]],["bool",15]]],[11,"required_free","","",0,[[],["string",3]]],[11,"optional_free","","",0,[[],[["string",3],["option",4]]]],[11,"done","","",0,[[]]],[5,"parse_args","","",null,[[],[["result",6],["vec",3]]]],[0,"collections","abstutil","",null,null],[3,"MultiMap","abstutil::collections","",null,null],[12,"map","","",1,null],[12,"empty","","",1,null],[11,"new","","",1,[[],["multimap",3]]],[11,"insert","","",1,[[]]],[11,"remove","","",1,[[]]],[11,"get","","",1,[[],["btreeset",3]]],[11,"set","","",1,[[["btreeset",3]]]],[11,"len","","",1,[[],["usize",15]]],[11,"borrow","","",1,[[],["btreemap",3]]],[11,"consume","","",1,[[],[["btreeset",3],["btreemap",3]]]],[3,"Counter","","",null,null],[12,"map","","",2,null],[12,"sum","","",2,null],[11,"new","","",2,[[],["counter",3]]],[11,"add","","",2,[[["usize",15]],["usize",15]]],[11,"inc","","",2,[[],["usize",15]]],[11,"get","","",2,[[],["usize",15]]],[11,"sorted_asc","","Values with the same count are grouped together",2,[[],[["vec",3],["vec",3]]]],[11,"highest_n","","",2,[[["usize",15]],["vec",3]]],[11,"max","","",2,[[],["usize",15]]],[11,"sum","","",2,[[],["usize",15]]],[11,"compare","","",2,[[["counter",3]],["vec",3]]],[11,"borrow","","",2,[[],["btreemap",3]]],[11,"consume","","",2,[[],[["usize",15],["btreemap",3]]]],[5,"wraparound_get","","",null,[[["isize",15],["vec",3]]]],[5,"retain_btreemap","","",null,[[["btreemap",3],["fnmut",8]]]],[5,"retain_btreeset","","",null,[[["btreeset",3],["fnmut",8]]]],[5,"contains_duplicates","","",null,[[["vec",3]],["bool",15]]],[3,"VecMap","","Use when your key is just PartialEq, not Ord or Hash.",null,null],[12,"inner","","",3,null],[11,"new","","",3,[[],["vecmap",3]]],[11,"consume","","",3,[[],["vec",3]]],[11,"mut_or_insert","","",3,[[["fn",8]]]],[3,"Tags","","Convenience functions around a string->string map",null,null],[12,"0","","",4,null],[11,"new","","",4,[[["string",3],["btreemap",3]],["tags",3]]],[11,"empty","","",4,[[],["tags",3]]],[11,"get","","",4,[[["str",15]],[["string",3],["option",4]]]],[11,"contains_key","","",4,[[["str",15]],["bool",15]]],[11,"is","","",4,[[["str",15]],["bool",15]]],[11,"is_any","","",4,[[["vec",3],["str",15]],["bool",15]]],[11,"insert","","",4,[[["into",8],["string",3]]]],[11,"remove","","",4,[[["str",15]],[["string",3],["option",4]]]],[11,"is_empty","","",4,[[],["bool",15]]],[11,"inner","","",4,[[],["btreemap",3]]],[8,"IndexableKey","","Use with <code>FixedMap</code>. From a particular key, extract a <code>usize</code>…",null,null],[10,"index","","",5,[[],["usize",15]]],[3,"FixedMap","","A drop-in replacement for <code>BTreeMap</code>, where the keys have …",null,null],[12,"inner","","",6,null],[12,"key_type","","",6,null],[11,"new","","",6,[[],["fixedmap",3]]],[11,"insert","","",6,[[]]],[11,"get","","",6,[[],["option",4]]],[11,"get_mut","","",6,[[],["option",4]]],[11,"contains_key","","",6,[[],["bool",15]]],[11,"remove","","",6,[[],["option",4]]],[11,"values","","",6,[[],[["flatten",3],["iter",3]]]],[0,"logger","abstutil","",null,null],[5,"setup","abstutil::logger","On native: uses env_logYou can adjust the log level …",null,[[]]],[0,"process","abstutil","",null,null],[5,"must_run_cmd","abstutil::process","Runs a command, asserts success. STDOUT and STDERR aren\'t …",null,[[["command",3]]]],[0,"serde","abstutil","",null,null],[5,"to_json","abstutil::serde","Stringifi
"augment_scenario":{"doc":"A tool to modify each person\'s schedule from an existing …","i":[[5,"main","augment_scenario","",null,[[]]],[5,"add_return_trips","","",null,[[["xorshiftrng",3],["scenario",3]]]],[5,"rand_duration","","",null,[[["xorshiftrng",3],["duration",3]],["duration",3]]],[5,"add_lunch_trips","","",null,[[["scenario",3],["timer",3],["xorshiftrng",3],["map",3]]]],[5,"pick_lunch_spot","","",null,[[["findclosest",3],["bool",15],["buildingid",3],["map",3],["xorshiftrng",3]],["option",4]]]],"p":[]},\
"clip_osm":{"doc":"","i":[[5,"main","clip_osm","Clips an .osm.pbf specified by <code>--pbf</code> using the Osmosis …",null,[[],["result",6]]],[5,"clip","","",null,[[["polygon",3],["str",15]],["result",6]]],[5,"to_pt","","",null,[[],[["f64",15],["point",3]]]]],"p":[]},\
"collisions":{"doc":"A simple data format to list collisions that\'ve occurred …","i":[[3,"CollisionDataset","collisions","A single dataset describing some collisions that happened.",null,null],[12,"source_url","","A URL pointing to the original data source.",0,null],[12,"collisions","","The collisions imported from the data source.",0,null],[3,"Collision","","A single collision that occurred in the real world.",null,null],[12,"location","","A single point describing where the collision occurred.",1,null],[12,"time","","The local time the collision occurred.",1,null],[12,"severity","","The severity reported in the original data source.",1,null],[4,"Severity","","A simple ranking for how severe the collision was. …",null,null],[13,"Slight","","",2,null],[13,"Serious","","",2,null],[13,"Fatal","","",2,null],[5,"import_stats19","","Import data from the UK STATS19 dataset. See …",null,[[["extrashapes",3],["str",15]],["collisiondataset",3]]],[5,"import_seattle","","Import data from Seattle GeoData …",null,[[["extrashapes",3],["str",15]],["collisiondataset",3]]],[5,"parse_incdttm","","",null,[[["str",15]],[["option",4],["duration",3]]]],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"from","","",1,[[]]],[11,"into","","",1,[[]]],[11,"borrow","","",1,[[]]],[11,"borrow_mut","","",1,[[]]],[11,"try_from","","",1,[[],["result",4]]],[11,"try_into","","",1,[[],["result",4]]],[11,"type_id","","",1,[[],["typeid",3]]],[11,"from","","",2,[[]]],[11,"into","","",2,[[]]],[11,"to_owned","","",2,[[]]],[11,"clone_into","","",2,[[]]],[11,"borrow","","",2,[[]]],[11,"borrow_mut","","",2,[[]]],[11,"try_from","","",2,[[],["result",4]]],[11,"try_into","","",2,[[],["result",4]]],[11,"type_id","","",2,[[],["typeid",3]]],[11,"equivalent","","",2,[[],["bool",15]]],[11,"clone","","",2,[[],["severity",4]]],[11,"eq","","",2,[[["severity",4]],["bool",15]]],[11,"fmt","","",2,[[["formatter",3]],["result",6]]],[11,"deserialize","","",0,[[],["result",4]]],[11,"deserialize","","",1,[[],["result",4]]],[11,"deserialize","","",2,[[],["result",4]]],[11,"serialize","","",0,[[],["result",4]]],[11,"serialize","","",1,[[],["result",4]]],[11,"serialize","","",2,[[],["result",4]]]],"p":[[3,"CollisionDataset"],[3,"Collision"],[4,"Severity"]]},\
"convert_osm":{"doc":"","i":[[0,"clip","convert_osm","",null,null],[5,"clip_map","convert_osm::clip","",null,[[["rawmap",3],["timer",3]]]],[0,"elevation","convert_osm","",null,null],[5,"add_data","convert_osm::elevation","",null,[[["rawmap",3],["timer",3]],["result",6]]],[5,"generate_input","","",null,[[["rawmap",3]],[["vec",3],["result",6]]]],[5,"scrape_output","","",null,[[["rawmap",3],["originalroad",3],["vec",3]],["result",6]]],[0,"extract","convert_osm","",null,null],[3,"OsmExtract","convert_osm::extract","",null,null],[12,"roads","","Unsplit roads",0,null],[12,"traffic_signals","","Traffic signals to the direction they apply",0,null],[12,"osm_node_ids","","",0,null],[12,"simple_turn_restrictions","","(ID, restriction type, from way ID, via node ID, to way …",0,null],[12,"complicated_turn_restrictions","","(relation ID, from way ID, via way ID, to way ID)",0,null],[12,"amenities","","(location, amenity)",0,null],[5,"extract_osm","","",null,[[["rawmap",3],["options",3],["timer",3]],["osmextract",3]]],[5,"is_road","","",null,[[["options",3],["tags",3]],["bool",15]]],[5,"is_bldg","","",null,[[["tags",3]],["bool",15]]],[5,"get_bldg_amenities","","",null,[[["tags",3]],[["vec",3],["amenity",3]]]],[5,"get_area_type","","",null,[[["tags",3]],[["areatype",4],["option",4]]]],[5,"find_parking_aisles","","",null,[[["rawmap",3],["vec",3]]]],[5,"service_road_crosses_parking_lot","","",null,[[["usize",15],["rawmap",3],["rawroad",3],["vec",3]],["bool",15]]],[0,"osm_geom","convert_osm","Utilities for extracting concrete geometry from OSM …",null,null],[5,"get_multipolygon_members","convert_osm::osm_geom","",null,[[["relation",3],["document",3],["relationid",3]],["vec",3]]],[5,"glue_multipolygon","","Take a bunch of partial PolyLines and attempt to glue …",null,[[["relationid",3],["option",4],["ring",3],["vec",3]],[["polygon",3],["vec",3]]]],[5,"glue_to_boundary","","",null,[[["polyline",3],["ring",3]],[["option",4],["polygon",3]]]],[5,"multipoly_geometry","","",null,[[["relation",3],["document",3],["relationid",3]],[["result",6],["polygon",3]]]],[0,"parking","convert_osm","",null,null],[17,"DIRECTED_ROAD_THICKNESS","convert_osm::parking","",null,null],[5,"apply_parking","","",null,[[["rawmap",3],["options",3],["timer",3]]]],[5,"use_parking_hints","","",null,[[["rawmap",3],["string",3],["timer",3]]]],[5,"use_offstreet_parking","","",null,[[["rawmap",3],["string",3],["timer",3]]]],[5,"apply_private_offstreet_parking","","",null,[[["rawmap",3],["privateoffstreetparking",4]]]],[0,"reader","convert_osm","",null,null],[3,"Document","convert_osm::reader","",null,null],[12,"gps_bounds","","",1,null],[12,"nodes","","",1,null],[12,"ways","","",1,null],[12,"relations","","",1,null],[3,"Node","","",null,null],[12,"pt","","",2,null],[12,"tags","","",2,null],[3,"Way","","",null,null],[12,"nodes","","",3,null],[12,"pts","","",3,null],[12,"tags","","",3,null],[3,"Relation","","",null,null],[12,"tags","","",4,null],[12,"members","","Role, member",4,null],[5,"read","","",null,[[["gpsbounds",3],["timer",3],["str",15]],[["document",3],["result",6]]]],[5,"read_tags","","",null,[[["node",3]],["tags",3]]],[5,"scrape_bounds","","",null,[[["document",3]],["gpsbounds",3]]],[0,"snappy","convert_osm","",null,null],[5,"snap_cycleways","convert_osm::snappy","Attempt to snap separately mapped cycleways to main …",null,[[["rawmap",3],["timer",3]]]],[5,"dump_output","","",null,[[["btreemap",3],["multimap",3],["rawmap",3],["hashmap",3],["wayid",3]]]],[5,"v1","","",null,[[["rawmap",3],["btreemap",3],["hashmap",3]],[["multimap",3],["wayid",3]]]],[0,"split_ways","convert_osm","",null,null],[5,"split_up_roads","convert_osm::split_ways","Returns amenities and a mapping of all points to split …",null,[[["rawmap",3],["osmextract",3],["timer",3]]]],[5,"dedupe_angles","","",null,[[["pt2d",3],["vec",3]],[["pt2d",3],["vec",3]]]],[5,"should_collapse_roundabout","","Many \\\"roundabouts\\\" like …",null,[[["rawroad",3]],["bool",15]]],[0,"transit","convert_osm","",null,null],[5,"extract_route","convert_osm::transit","",null,[[["polygon",3],["document",3],["relationid
"dump_map":{"doc":"","i":[[5,"main","dump_map","",null,[[]]]],"p":[]},\
"dump_scenario":{"doc":"","i":[[5,"main","dump_scenario","",null,[[]]]],"p":[]},\
"extract_cities":{"doc":"Extracts all cities from a large .osm file.","i":[[5,"main","extract_cities","",null,[[]]]],"p":[]},\
"fifteen_min":{"doc":"","i":[[0,"find_home","fifteen_min","",null,null],[3,"FindHome","fifteen_min::find_home","Ask what types of amenities are necessary to be within a …",null,null],[12,"options","","",0,null],[11,"new","","",0,[[["eventctx",3],["options",4]],[["box",3],["state",8]]]],[5,"score_houses","","For every house in the map, return the percent of …",null,[[["simpleapp",3],["vec",3],["timer",3],["options",4],["amenitytype",4]],[["buildingid",3],["hashmap",3],["percent",3]]]],[3,"Results","","",null,null],[12,"draw_houses","","",1,null],[11,"new","","",1,[[["simpleapp",3],["eventctx",3],["hashmap",3],["percent",3],["buildingid",3],["vec",3],["amenitytype",4]],[["box",3],["state",8]]]],[0,"isochrone","fifteen_min","",null,null],[3,"Isochrone","fifteen_min::isochrone","Represents the area reachable from a single building.",null,null],[12,"start","","The center of the isochrone",2,null],[12,"options","","The options used to generate this isochrone",2,null],[12,"draw","","Colored polygon contours, uploaded to the GPU and ready …",2,null],[12,"time_to_reach_building","","How far away is each building from the start?",2,null],[12,"amenities_reachable","","Per category of amenity, what buildings have that?",2,null],[12,"population","","How many people live in the returned area, according to …",2,null],[12,"onstreet_parking_spots","","How many sreet parking spots are on the same road as any …",2,null],[4,"Options","","The constraints on how we\'re moving.",null,null],[13,"Walking","","",3,null],[13,"Biking","","",3,null],[11,"time_to_reach_building","","",3,[[["map",3],["buildingid",3]],[["hashmap",3],["buildingid",3],["duration",3]]]],[11,"new","","",2,[[["simpleapp",3],["eventctx",3],["buildingid",3],["options",4]],["isochrone",3]]],[11,"path_to","","",2,[[["map",3],["buildingid",3]],[["option",4],["path",3]]]],[11,"draw_isochrone","","",2,[[["simpleapp",3]],["geombatch",3]]],[0,"viewer","fifteen_min","This is a tool to experiment with the concept of …",null,null],[3,"Viewer","fifteen_min::viewer","This is the UI state for exploring the isochrone/walkshed …",null,null],[12,"panel","","",4,null],[12,"highlight_start","","",4,null],[12,"isochrone","","",4,null],[12,"hovering_on_bldg","","",4,null],[12,"hovering_on_category","","",4,null],[12,"draw_unwalkable_roads","","",4,null],[11,"random_start","","Start with a random building",4,[[["simpleapp",3],["eventctx",3]],[["box",3],["state",8]]]],[11,"new","","",4,[[["simpleapp",3],["eventctx",3],["buildingid",3]],[["box",3],["state",8]]]],[5,"options_to_controls","","",null,[[["options",4],["eventctx",3]],["widget",3]]],[5,"options_from_controls","","",null,[[["panel",3]],["options",4]]],[5,"draw_star","","",null,[[["eventctx",3],["building",3]],["geombatch",3]]],[5,"build_panel","","",null,[[["isochrone",3],["simpleapp",3],["eventctx",3],["building",3]],["panel",3]]],[3,"HoverOnBuilding","","",null,null],[12,"tooltip","","",5,null],[12,"drawn_route","","",5,null],[6,"HoverKey","","(building, scale factor)",null,null],[11,"key","","",5,[[["eventctx",3],["simpleapp",3]],["option",4]]],[11,"value","","",5,[[["simpleapp",3],["eventctx",3],["isochrone",3]],["hoveronbuilding",3]]],[3,"ExploreAmenities","","",null,null],[12,"table","","",6,null],[12,"panel","","",6,null],[12,"draw","","",6,null],[3,"Entry","","",null,null],[12,"bldg","","",7,null],[12,"amenity_idx","","",7,null],[12,"name","","",7,null],[12,"amenity_type","","",7,null],[12,"address","","",7,null],[12,"duration_away","","",7,null],[11,"new","","",6,[[["amenitytype",4],["simpleapp",3],["eventctx",3],["isochrone",3]],[["box",3],["state",8]]]],[5,"draw_unwalkable_roads","","",null,[[["simpleapp",3],["eventctx",3],["options",4]],["drawable",3]]],[6,"App","fifteen_min","",null,null],[5,"main","","",null,[[]]],[5,"run","","",null,[[["settings",3]]]],[11,"from","fifteen_min::find_home","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"i
"game":{"doc":"","i":[[0,"app","game","",null,null],[6,"Transition","game::app","",null,null],[3,"App","","The top-level data that lasts through the entire game, no …",null,null],[12,"primary","","",0,null],[12,"cs","","",0,null],[12,"opts","","",0,null],[12,"per_obj","","",0,null],[12,"session","","Static data that lasts the entire session. Use sparingly.",0,null],[11,"has_prebaked","","",0,[[],["option",4]]],[11,"prebaked","","",0,[[],["analytics",3]]],[11,"set_prebaked","","",0,[[["option",4]]]],[11,"draw","","",0,[[["showobject",8],["gfxctx",3],["drawoptions",3]]]],[11,"recalculate_current_selection","","Assumes some defaults.",0,[[["eventctx",3]]]],[11,"mouseover_unzoomed_roads_and_intersections","","",0,[[["eventctx",3]],[["id",4],["option",4]]]],[11,"mouseover_unzoomed_intersections","","",0,[[["eventctx",3]],[["id",4],["option",4]]]],[11,"mouseover_unzoomed_buildings","","",0,[[["eventctx",3]],[["id",4],["option",4]]]],[11,"mouseover_unzoomed_everything","","",0,[[["eventctx",3]],[["id",4],["option",4]]]],[11,"mouseover_debug_mode","","",0,[[["eventctx",3],["showobject",8]],[["id",4],["option",4]]]],[11,"calculate_current_selection","","",0,[[["eventctx",3],["bool",15],["showobject",8]],[["id",4],["option",4]]]],[11,"get_renderables_back_to_front","","",0,[[["agentcache",3],["bounds",3],["showobject",8],["prerender",3]],[["vec",3],["renderable",8]]]],[11,"clear_everything","","Ensure the map edits are blank, reset the simulation, and …",0,[[["eventctx",3]]]],[11,"click_on_intersection","","If an intersection was clicked, return its ID.",0,[[["eventctx",3],["into",8],["string",3]],[["option",4],["intersectionid",3]]]],[11,"click_on_lane","","If a lane was clicked, return its ID.",0,[[["eventctx",3],["into",8],["string",3]],[["option",4],["laneid",3]]]],[3,"ShowLayers","","",null,null],[12,"show_buildings","","",1,null],[12,"show_parking_lots","","",1,null],[12,"show_intersections","","",1,null],[12,"show_lanes","","",1,null],[12,"show_areas","","",1,null],[12,"show_labels","","",1,null],[11,"new","","",1,[[],["showlayers",3]]],[8,"ShowObject","","",null,null],[10,"show","","",2,[[["id",4]],["bool",15]]],[10,"layers","","",2,[[],["showlayers",3]]],[3,"ShowEverything","","",null,null],[12,"layers","","",3,null],[11,"new","","",3,[[],["showeverything",3]]],[3,"Flags","","",null,null],[12,"sim_flags","","",4,null],[12,"live_map_edits","","If true, all map edits immediately apply to the live …",4,null],[12,"study_area","","Display an extra area with this name on the map. This …",4,null],[3,"PerMap","","All of the state that\'s bound to a specific map.",null,null],[12,"map","","",5,null],[12,"draw_map","","",5,null],[12,"sim","","",5,null],[12,"agents","","",5,null],[12,"current_selection","","",5,null],[12,"current_flags","","",5,null],[12,"last_warped_from","","",5,null],[12,"sim_cb","","",5,null],[12,"dirty_from_edits","","If we ever left edit mode and resumed without restarting …",5,null],[12,"has_modified_trips","","Any ScenarioModifiers in effect?",5,null],[12,"unedited_map","","Sometimes we need the map before any edits have been …",5,null],[12,"layer","","",5,null],[12,"suspended_sim","","Only filled out in edit mode. Stored here once to avoid …",5,null],[12,"prebaked","","Only exists in some gameplay modes. Must be carefully …",5,null],[12,"scenario","","The most recent Scenario loaded from a file. Don\'t depend …",5,null],[11,"map_loaded","","",5,[[["colorscheme",3],["timer",3],["options",3],["flags",3],["eventctx",3],["map",3],["sim",3]],["permap",3]]],[11,"init_camera_for_loaded_map","","",5,[[["eventctx",3],["bool",15]]]],[11,"clear_sim","","Returns whatever was there",5,[[],["sim",3]]],[11,"calculate_unedited_map","","If needed, makes sure the unedited_map is populated. …",5,[[["eventctx",3]],[["transition",4],["option",4]]]],[11,"canonical_point","","",5,[[["id",4]],[["option",4],["pt2d",3]]]],[3,"SessionState","","",null,null],[12,"tutorial","","",6,null],[12,"high_scores","","",6,null],[12,"info_panel_tab","","",6,null],[11,"empty","","",6,[[],["sessionstate",3]]],[3,"PerObjectActio
"generate_houses":{"doc":"Procedurally generates houses along empty residential …","i":[[5,"main","generate_houses","",null,[[]]],[5,"generate_buildings_on_empty_residential_roads","","",null,[[["xorshiftrng",3],["map",3],["timer",3]],[["vec",3],["polygon",3]]]],[5,"rand_dist","","",null,[[["f64",15],["xorshiftrng",3]],["distance",3]]]],"p":[]},\
"geojson_to_osmosis":{"doc":"","i":[[5,"main","geojson_to_osmosis","Reads GeoJSON input from STDIN, extracts a polygon from …",null,[[],["result",6]]],[5,"extract_boundaries","","",null,[[["geojson",4]],[["vec",3],["result",6]]]]],"p":[]},\
"geom":{"doc":"","i":[[0,"angle","geom","",null,null],[3,"Angle","geom::angle","An angle, stored in radians.",null,null],[12,"0","","",0,null],[18,"ZERO","","",0,null],[11,"new_rads","","Create an angle in radians.",0,[[["f64",15]],["angle",3]]],[11,"degrees","","Create an angle in degrees.",0,[[["f64",15]],["angle",3]]],[11,"opposite","","Invert the direction of this angle.",0,[[],["angle",3]]],[11,"invert_y","","",0,[[],["angle",3]]],[11,"rotate_degs","","Rotates this angle by some degrees.",0,[[["f64",15]],["angle",3]]],[11,"normalized_radians","","Returns [0, 2pi)",0,[[],["f64",15]]],[11,"normalized_degrees","","Returns [0, 360)",0,[[],["f64",15]]],[11,"simple_shortest_rotation_towards","","Returns [-180, 180]",0,[[["angle",3]],["f64",15]]],[11,"shortest_rotation_towards","","Logically this returns [-180, 180], but keep in mind when …",0,[[["angle",3]],["angle",3]]],[11,"approx_eq","","True if this angle is within some degrees of another, …",0,[[["f64",15],["angle",3]],["bool",15]]],[11,"reorient","","I don\'t know how to describe what this does. Use for …",0,[[],["angle",3]]],[0,"bounds","geom","",null,null],[3,"Bounds","geom::bounds","Represents a rectangular boundary of <code>Pt2D</code> points.",null,null],[12,"min_x","","",1,null],[12,"min_y","","",1,null],[12,"max_x","","",1,null],[12,"max_y","","",1,null],[11,"new","","A boundary including no points.",1,[[],["bounds",3]]],[11,"zero","","",1,[[]]],[11,"from","","Create a boundary covering some points.",1,[[["vec",3]],["bounds",3]]],[11,"update","","Update the boundary to include this point.",1,[[["pt2d",3]]]],[11,"union","","Unions two boundaries.",1,[[["bounds",3]]]],[11,"add_buffer","","Expand the existing boundary by some distance evenly on …",1,[[["distance",3]]]],[11,"contains","","True if the point is within the boundary.",1,[[["pt2d",3]],["bool",15]]],[11,"as_bbox","","Converts the boundary to the format used by <code>aabb_quadtree</code>.",1,[[],["rect",3]]],[11,"get_rectangle","","Creates a rectangle covering this boundary.",1,[[],["polygon",3]]],[11,"width","","The width of this boundary.",1,[[],["f64",15]]],[11,"height","","The height of this boundary.",1,[[],["f64",15]]],[11,"center","","The center point of this boundary.",1,[[],["pt2d",3]]],[3,"GPSBounds","","Represents a rectangular boundary of <code>LonLat</code> points. After …",null,null],[12,"min_lon","","",2,null],[12,"min_lat","","",2,null],[12,"max_lon","","",2,null],[12,"max_lat","","",2,null],[11,"new","","A boundary including no points.",2,[[],["gpsbounds",3]]],[11,"from","","Create a boundary covering some points.",2,[[["vec",3],["lonlat",3]],["gpsbounds",3]]],[11,"update","","Update the boundary to include this point.",2,[[["lonlat",3]]]],[11,"contains","","True if the point is within the boundary.",2,[[["lonlat",3]],["bool",15]]],[11,"get_max_world_pt","","The bottom-right corner of the boundary, in map-space.",2,[[],["pt2d",3]]],[11,"to_bounds","","Converts the boundary to map-space.",2,[[],["bounds",3]]],[11,"try_convert","","Convert all points to map-space, failing if any points …",2,[[["vec",3]],[["option",4],["vec",3]]]],[11,"convert","","Convert all points to map-space. The points may be …",2,[[["vec",3]],[["pt2d",3],["vec",3]]]],[11,"convert_back","","Convert map-space points back to <code>LonLat</code>s. This is only …",2,[[["vec",3]],[["vec",3],["lonlat",3]]]],[0,"circle","geom","",null,null],[17,"TRIANGLES_PER_CIRCLE","geom::circle","",null,null],[3,"Circle","","A circle, defined by a center and radius.",null,null],[12,"center","","",3,null],[12,"radius","","",3,null],[11,"new","","Creates a circle.",3,[[["distance",3],["pt2d",3]],["circle",3]]],[11,"contains_pt","","True if the point is inside the circle.",3,[[["pt2d",3]],["bool",15]]],[11,"get_bounds","","Get the boundary containing this circle.",3,[[],["bounds",3]]],[11,"to_polygon","","Renders the circle as a polygon.",3,[[],["polygon",3]]],[11,"to_partial_polygon","","Renders some percent, between [0, 1], of the circle as a …",3,[[["f64",15]],["polygon",3]]],[11,"to_ring","","Returns the ring around t
"headless":{"doc":"","i":[[3,"MAP","headless","",null,null],[12,"__private_field","","",0,null],[3,"SIM","","",null,null],[12,"__private_field","","",1,null],[3,"LOAD","","",null,null],[12,"__private_field","","",2,null],[5,"main","","",null,[[]]],[5,"serve_req","","",null,[[["body",3],["request",3]]]],[5,"handle_command","","",null,[[["hashmap",3],["vec",3],["sim",3],["map",3],["loadsim",3],["str",15]],[["result",6],["string",3]]]],[3,"FinishedTrip","","",null,null],[12,"id","","",3,null],[12,"person","","",3,null],[12,"duration","","",3,null],[12,"distance_crossed","","",3,null],[12,"mode","","",3,null],[12,"capped","","",3,null],[3,"Delays","","",null,null],[12,"per_direction","","",4,null],[3,"Throughput","","",null,null],[12,"per_direction","","",5,null],[3,"AgentPositions","","",null,null],[12,"agents","","",6,null],[3,"AgentPosition","","",null,null],[12,"id","","The agent\'s ID",7,null],[12,"trip","","None for buses",7,null],[12,"person","","None for buses",7,null],[12,"vehicle_type","","None for pedestrians",7,null],[12,"pos","","The agent\'s current position. For pedestrians, this is …",7,null],[12,"distance_crossed","","The distance crossed so far by the agent, in meters. …",7,null],[3,"RoadThroughput","","",null,null],[12,"counts","","",8,null],[3,"TrafficSignalState","","",null,null],[12,"current_stage_idx","","",9,null],[12,"remaining_time","","",9,null],[12,"accepted","","",9,null],[12,"waiting","","",9,null],[3,"BlockedByGraph","","",null,null],[12,"blocked_by","","Each entry indicates that some agent has been stuck in …",10,null],[3,"LoadSim","","",null,null],[12,"scenario","","",11,null],[12,"modifiers","","",11,null],[12,"edits","","",11,null],[12,"rng_seed","","",11,null],[12,"opts","","",11,null],[11,"setup","","",11,[[["timer",3]]]],[5,"export_geometry","","",null,[[["map",3],["intersectionid",3]],["geojson",4]]],[5,"export_all_geometry","","",null,[[["map",3]],["geojson",4]]],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"vzip","","",0,[[]]],[11,"into_any","","",0,[[["global",3],["box",3]],[["any",8],["global",3],["box",3]]]],[11,"into_any_rc","","",0,[[["rc",3]],[["any",8],["rc",3]]]],[11,"as_any","","",0,[[],["any",8]]],[11,"as_any_mut","","",0,[[],["any",8]]],[11,"into_any_arc","","",0,[[["arc",3]],[["arc",3],["any",8]]]],[11,"from","","",1,[[]]],[11,"into","","",1,[[]]],[11,"borrow","","",1,[[]]],[11,"borrow_mut","","",1,[[]]],[11,"try_from","","",1,[[],["result",4]]],[11,"try_into","","",1,[[],["result",4]]],[11,"type_id","","",1,[[],["typeid",3]]],[11,"vzip","","",1,[[]]],[11,"into_any","","",1,[[["global",3],["box",3]],[["any",8],["global",3],["box",3]]]],[11,"into_any_rc","","",1,[[["rc",3]],[["any",8],["rc",3]]]],[11,"as_any","","",1,[[],["any",8]]],[11,"as_any_mut","","",1,[[],["any",8]]],[11,"into_any_arc","","",1,[[["arc",3]],[["arc",3],["any",8]]]],[11,"from","","",2,[[]]],[11,"into","","",2,[[]]],[11,"borrow","","",2,[[]]],[11,"borrow_mut","","",2,[[]]],[11,"try_from","","",2,[[],["result",4]]],[11,"try_into","","",2,[[],["result",4]]],[11,"type_id","","",2,[[],["typeid",3]]],[11,"vzip","","",2,[[]]],[11,"into_any","","",2,[[["global",3],["box",3]],[["any",8],["global",3],["box",3]]]],[11,"into_any_rc","","",2,[[["rc",3]],[["any",8],["rc",3]]]],[11,"as_any","","",2,[[],["any",8]]],[11,"as_any_mut","","",2,[[],["any",8]]],[11,"into_any_arc","","",2,[[["arc",3]],[["arc",3],["any",8]]]],[11,"from","","",3,[[]]],[11,"into","","",3,[[]]],[11,"borrow","","",3,[[]]],[11,"borrow_mut","","",3,[[]]],[11,"try_from","","",3,[[],["result",4]]],[11,"try_into","","",3,[[],["result",4]]],[11,"type_id","","",3,[[],["typeid",3]]],[11,"vzip","","",3,[[]]],[11,"into_any","","",3,[[["global",3],["box",3]],[["any",8],["global",3],["box",3]]]],[11,"into_any_rc","","",3,[[["rc",3]],[["any",8],["rc",3]]]],[11,"as_any","","",3,[[],["any",8]]],[11,"as_any_mut","","",3,[[],["any",8]]],[11,"into_any_arc","","",3,[[["ar
"import_traffic":{"doc":"","i":[[5,"main","import_traffic","",null,[[]]],[3,"Input","","",null,null],[12,"scenario_name","","",0,null],[12,"people","","",0,null],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"vzip","","",0,[[]]],[11,"into_any","","",0,[[["global",3],["box",3]],[["global",3],["any",8],["box",3]]]],[11,"into_any_rc","","",0,[[["rc",3]],[["rc",3],["any",8]]]],[11,"as_any","","",0,[[],["any",8]]],[11,"as_any_mut","","",0,[[],["any",8]]],[11,"into_any_arc","","",0,[[["arc",3]],[["arc",3],["any",8]]]],[11,"deserialize","","",0,[[],["result",4]]]],"p":[[3,"Input"]]},\
"importer":{"doc":"It\'s assumed that the importer is run with the current …","i":[[0,"berlin","importer","",null,null],[5,"import_extra_data","importer::berlin","",null,[[["rawmap",3],["importerconfiguration",3],["timer",3]]]],[5,"correlate_population","","",null,[[["string",3],["timer",3]]]],[3,"Record","","",null,null],[12,"raumid","","",0,null],[12,"e_e","","",0,null],[5,"distribute_residents","","",null,[[["map",3],["timer",3]]]],[0,"configuration","importer","",null,null],[3,"ImporterConfiguration","importer::configuration","",null,null],[12,"osmconvert","","",1,null],[12,"unzip","","",1,null],[12,"gunzip","","",1,null],[12,"gunzip_args","","",1,null],[5,"load_configuration","","",null,[[],["importerconfiguration",3]]],[0,"dependencies","importer","",null,null],[5,"are_dependencies_callable","importer::dependencies","",null,[[["importerconfiguration",3]],["bool",15]]],[5,"is_program_callable","","",null,[[["osstr",3],["asref",8]],["bool",15]]],[0,"generic","importer","",null,null],[3,"GenericCityImporter","importer::generic","Importing a new city can be done just by filling out this …",null,null],[12,"osm_url","","The URL to a .osm or .osm.pbf file containing the entire …",2,null],[12,"map_config","","",2,null],[12,"onstreet_parking","","",2,null],[12,"public_offstreet_parking","","",2,null],[12,"private_offstreet_parking","","",2,null],[12,"include_railroads","","OSM railway=rail will be included as light rail if so. …",2,null],[12,"extra_buildings","","If provided, read polygons from this GeoJSON file and add …",2,null],[11,"osm_to_raw","","",2,[[["mapname",3],["importerconfiguration",3],["timer",3]]]],[0,"seattle","importer","",null,null],[5,"input","importer::seattle","",null,[[["importerconfiguration",3],["timer",3]]]],[5,"osm_to_raw","","",null,[[["timer",3],["importerconfiguration",3],["str",15]]]],[5,"adjust_private_parking","","",null,[[["map",3],["scenario",3]]]],[5,"add_gtfs_schedules","","This import from GTFS:",null,[[["map",3]]]],[3,"TripRecord","","",null,null],[12,"shape_id","","",3,null],[12,"trip_id","","",3,null],[3,"StopTimeRecord","","",null,null],[12,"trip_id","","",4,null],[12,"arrival_time","","",4,null],[5,"match_parcels_to_buildings","","Match OSM buildings to parcels, scraping the number of …",null,[[["map",3],["extrashapes",3],["timer",3]]]],[0,"uk","importer","",null,null],[5,"import_collision_data","importer::uk","",null,[[["rawmap",3],["importerconfiguration",3],["timer",3]]]],[5,"generate_scenario","","",null,[[["timer",3],["importerconfiguration",3],["map",3]]]],[5,"parse_desire_lines","","",null,[[["string",3]],[["result",6],["vec",3]]]],[3,"Record","","",null,null],[12,"home_zone","","",5,null],[12,"work_zone","","",5,null],[12,"num_transit1","","",5,null],[12,"num_transit2","","",5,null],[12,"num_transit3","","",5,null],[12,"num_drivers","","",5,null],[12,"num_bikers","","",5,null],[12,"num_pedestrians","","",5,null],[5,"parse_zones","","",null,[[["string",3],["gpsbounds",3]],[["result",6],["hashmap",3]]]],[5,"parse_polygon","","",null,[[["gpsbounds",3],["vec",3],["vec",3]],[["polygon",3],["result",6]]]],[5,"load_study_area","","",null,[[["map",3]],[["polygon",3],["result",6]]]],[0,"utils","importer","",null,null],[5,"download","importer::utils","If the output file doesn\'t already exist, downloads the …",null,[[["importerconfiguration",3],["string",3],["str",15]]]],[5,"download_kml","","If the output file doesn\'t already exist, downloads the …",null,[[["string",3],["gpsbounds",3],["timer",3],["bool",15],["str",15]]]],[5,"osmconvert","","Uses osmconvert to clip the input .osm (or .pbf) against …",null,[[["string",3],["importerconfiguration",3]]]],[5,"raw_to_map","","Converts a RawMap to a Map.",null,[[["bool",15],["mapname",3],["timer",3]],["map",3]]],[5,"main","importer","",null,[[]]],[5,"regenerate_everything","","",null,[[["importerconfiguration",3]]]],[3,"Job","","",null,null],[12,"city","","",6,null],[12,"osm_to_raw","","",6,null],[12,"raw_to_map","","",6,null],[12,"scenario","","",6,null],[12,"city_overview","","",6,null],[12,"only_map","","",6,null],[11
"json_to_binary_map":{"doc":"","i":[[5,"main","json_to_binary_map","",null,[[]]]],"p":[]},\
"kml":{"doc":"","i":[[3,"ExtraShapes","kml","Some dataset imported from KML, CSV, or something else. …",null,null],[12,"shapes","","",0,null],[3,"ExtraShape","","A single object in the dataset.",null,null],[12,"points","","The object has a different inferred shape depending on …",1,null],[12,"attributes","","Arbitrary key/value pairs associated with this object; no …",1,null],[5,"load","","Parses a .kml file and returns ExtraShapes. Objects will …",null,[[["timer",3],["bool",15],["gpsbounds",3],["string",3]],[["result",6],["extrashapes",3]]]],[5,"recurse","","",null,[[["bool",15],["usize",15],["node",3],["btreemap",3],["vec",3],["gpsbounds",3]],["result",6]]],[5,"parse_pt","","",null,[[["str",15]],[["lonlat",3],["option",4]]]],[11,"load_csv","","Parses a .csv file and returns ExtraShapes. Each record …",0,[[["timer",3],["gpsbounds",3],["string",3]],[["result",6],["extrashapes",3]]]],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"from","","",1,[[]]],[11,"into","","",1,[[]]],[11,"to_owned","","",1,[[]]],[11,"clone_into","","",1,[[]]],[11,"borrow","","",1,[[]]],[11,"borrow_mut","","",1,[[]]],[11,"try_from","","",1,[[],["result",4]]],[11,"try_into","","",1,[[],["result",4]]],[11,"type_id","","",1,[[],["typeid",3]]],[11,"clone","","",1,[[],["extrashape",3]]],[11,"fmt","","",1,[[["formatter",3]],["result",6]]],[11,"serialize","","",0,[[],["result",4]]],[11,"serialize","","",1,[[],["result",4]]],[11,"deserialize","","",0,[[],["result",4]]],[11,"deserialize","","",1,[[],["result",4]]]],"p":[[3,"ExtraShapes"],[3,"ExtraShape"]]},\
"map_editor":{"doc":"The map_editor renders and lets you edit RawMaps, which …","i":[[0,"edit","map_editor","",null,null],[3,"EditRoad","map_editor::edit","",null,null],[12,"r","","",0,null],[12,"show_direction","","",0,null],[11,"new","","",0,[[["app",3],["eventctx",3],["originalroad",3]],[["state",8],["box",3]]]],[0,"model","map_editor","",null,null],[17,"INTERSECTION_RADIUS","map_editor::model","",null,null],[17,"BUILDING_LENGTH","","",null,null],[3,"Model","","",null,null],[12,"map","","",1,null],[12,"showing_pts","","",1,null],[12,"world","","",1,null],[12,"include_bldgs","","",1,null],[12,"intersection_geom","","",1,null],[11,"blank","","",1,[[],["model",3]]],[11,"import","","",1,[[["string",3],["bool",15],["eventctx",3]],["model",3]]],[11,"export_to_osm","","",1,[[]]],[11,"set_boundary","","",1,[[["pt2d",3],["eventctx",3]]]],[11,"compute_bounds","","",1,[[],["bounds",3]]],[11,"intersection_added","","",1,[[["nodeid",3],["eventctx",3]]]],[11,"create_i","","",1,[[["pt2d",3],["eventctx",3]]]],[11,"move_i","","",1,[[["nodeid",3],["pt2d",3],["eventctx",3]]]],[11,"delete_i","","",1,[[["nodeid",3]]]],[11,"toggle_i","","",1,[[["nodeid",3],["eventctx",3]]]],[11,"show_intersection_geometry","","",1,[[["bool",15],["eventctx",3]]]],[11,"road_added","","",1,[[["originalroad",3],["eventctx",3]]]],[11,"road_deleted","","",1,[[["originalroad",3]]]],[11,"create_r","","",1,[[["nodeid",3],["eventctx",3]]]],[11,"delete_r","","",1,[[["originalroad",3],["eventctx",3]]]],[11,"road_object","","",1,[[["originalroad",3]],[["id",4],["object",3]]]],[11,"show_r_points","","",1,[[["originalroad",3],["eventctx",3]]]],[11,"stop_showing_pts","","",1,[[["originalroad",3]]]],[11,"move_r_pt","","",1,[[["usize",15],["pt2d",3],["originalroad",3],["eventctx",3]]]],[11,"delete_r_pt","","",1,[[["usize",15],["originalroad",3],["eventctx",3]]]],[11,"insert_r_pt","","",1,[[["pt2d",3],["originalroad",3],["eventctx",3]],[["option",4],["id",4]]]],[11,"clear_r_pts","","",1,[[["originalroad",3],["eventctx",3]]]],[11,"merge_r","","",1,[[["originalroad",3],["eventctx",3]]]],[11,"bldg_added","","",1,[[["osmid",4],["eventctx",3]]]],[11,"create_b","","",1,[[["pt2d",3],["eventctx",3]],["id",4]]],[11,"move_b","","",1,[[["pt2d",3],["osmid",4],["eventctx",3]]]],[11,"delete_b","","",1,[[["osmid",4]]]],[4,"ID","","",null,null],[13,"Building","","",2,null],[13,"Intersection","","",2,null],[13,"Road","","",2,null],[13,"RoadPoint","","",2,null],[5,"time_to_id","","",null,[[],["i64",15]]],[5,"dump_to_osm","","Express a RawMap as a .osm file. Why not just save the …",null,[[["rawmap",3]],[["error",3],["result",4]]]],[0,"world","map_editor","",null,null],[8,"ObjectID","map_editor::world","",null,null],[10,"zorder","","",3,[[],["usize",15]]],[3,"Object","","",null,null],[12,"id","","",4,null],[12,"geometry","","",4,null],[11,"new","","",4,[[["polygon",3],["color",3]],["object",3]]],[3,"WorldObject","","",null,null],[12,"unioned_polygon","","",5,null],[12,"draw","","",5,null],[12,"quadtree_id","","",5,null],[3,"World","","",null,null],[12,"objects","","",6,null],[12,"quadtree","","",6,null],[12,"current_selection","","",6,null],[11,"new","","",6,[[],["world",3]]],[11,"draw","","",6,[[["fn",8],["gfxctx",3]]]],[11,"handle_mouseover","","",6,[[["eventctx",3]]]],[11,"force_set_selection","","",6,[[]]],[11,"get_selection","","",6,[[],["option",4]]],[11,"add","","",6,[[["object",3],["eventctx",3]]]],[11,"delete","","",6,[[]]],[3,"App","map_editor","",null,null],[12,"model","","",7,null],[3,"MainState","","",null,null],[12,"mode","","",8,null],[12,"panel","","",8,null],[12,"last_id","","",8,null],[4,"Mode","","",null,null],[13,"Viewing","","",9,null],[13,"MovingIntersection","","",9,null],[13,"MovingBuilding","","",9,null],[13,"MovingRoadPoint","","",9,null],[13,"CreatingRoad","","",9,null],[13,"SetBoundaryPt1","","",9,null],[13,"SetBoundaryPt2","","",9,null],[11,"new","","",8,[[["eventctx",3]]]],[5,"main","","",null,[[]]],[11,"from","map_editor::edit","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4
"map_gui":{"doc":"This crate contains common code for applications that …","i":[[0,"colors","map_gui","A color scheme groups colors used for different map, …",null,null],[4,"ColorSchemeChoice","map_gui::colors","",null,null],[13,"DayMode","","",0,null],[13,"NightMode","","",0,null],[13,"Pregame","","",0,null],[13,"SAMGreenDay","","",0,null],[13,"SAMDesertDay","","",0,null],[13,"BAP","","",0,null],[13,"OSM","","",0,null],[13,"Starcat","","",0,null],[13,"Textured","","",0,null],[13,"MapboxLight","","",0,null],[13,"MapboxDark","","",0,null],[13,"FadedZoom","","",0,null],[13,"NegativeSpace","","",0,null],[11,"choices","","",0,[[],[["choice",3],["vec",3]]]],[3,"ColorScheme","","",null,null],[12,"scheme","","",1,null],[12,"panel_bg","","",1,null],[12,"inner_panel_bg","","",1,null],[12,"day_time_slider","","",1,null],[12,"night_time_slider","","",1,null],[12,"selected","","",1,null],[12,"current_object","","",1,null],[12,"perma_selected_object","","",1,null],[12,"fade_map_dark","","",1,null],[12,"gui_style","","",1,null],[12,"dialog_bg","","",1,null],[12,"minimap_cursor_border","","",1,null],[12,"minimap_cursor_bg","","",1,null],[12,"driving_lane","","",1,null],[12,"bus_lane","","",1,null],[12,"parking_lane","","",1,null],[12,"bike_lane","","",1,null],[12,"sidewalk","","",1,null],[12,"sidewalk_lines","","",1,null],[12,"general_road_marking","","",1,null],[12,"road_center_line","","",1,null],[12,"light_rail_track","","",1,null],[12,"private_road","","",1,null],[12,"unzoomed_highway","","",1,null],[12,"unzoomed_arterial","","",1,null],[12,"unzoomed_residential","","",1,null],[12,"unzoomed_trail","","",1,null],[12,"normal_intersection","","",1,null],[12,"stop_sign","","",1,null],[12,"stop_sign_pole","","",1,null],[12,"signal_protected_turn","","",1,null],[12,"signal_permitted_turn","","",1,null],[12,"signal_banned_turn","","",1,null],[12,"signal_box","","",1,null],[12,"signal_spinner","","",1,null],[12,"signal_turn_block_bg","","",1,null],[12,"very_slow_intersection","","",1,null],[12,"slow_intersection","","",1,null],[12,"normal_slow_intersection","","",1,null],[12,"void_background","","",1,null],[12,"map_background","","",1,null],[12,"unzoomed_interesting_intersection","","",1,null],[12,"residential_building","","",1,null],[12,"commercial_building","","",1,null],[12,"building_outline","","",1,null],[12,"parking_lot","","",1,null],[12,"grass","","",1,null],[12,"water","","",1,null],[12,"median_strip","","",1,null],[12,"pedestrian_plaza","","",1,null],[12,"study_area","","",1,null],[12,"unzoomed_car","","",1,null],[12,"unzoomed_bike","","",1,null],[12,"unzoomed_bus","","",1,null],[12,"unzoomed_pedestrian","","",1,null],[12,"agent_colors","","",1,null],[12,"route","","",1,null],[12,"turn_arrow","","",1,null],[12,"brake_light","","",1,null],[12,"bus_body","","",1,null],[12,"bus_label","","",1,null],[12,"train_body","","",1,null],[12,"ped_head","","",1,null],[12,"ped_foot","","",1,null],[12,"ped_preparing_bike_body","","",1,null],[12,"ped_crowd","","",1,null],[12,"bike_frame","","",1,null],[12,"parked_car","","",1,null],[12,"good_to_bad_red","","",1,null],[12,"good_to_bad_green","","",1,null],[12,"bus_layer","","",1,null],[12,"edits_layer","","",1,null],[12,"parking_trip","","",1,null],[12,"bike_trip","","",1,null],[12,"bus_trip","","",1,null],[12,"before_changes","","",1,null],[12,"after_changes","","",1,null],[11,"new","","",1,[[["eventctx",3],["colorschemechoice",4]],["colorscheme",3]]],[11,"pregame","","",1,[[],["colorscheme",3]]],[11,"day_mode","","",1,[[],["colorscheme",3]]],[11,"light_background","","",1,[[["style",3]],["colorscheme",3]]],[11,"rotating_color_plot","","",1,[[["usize",15]],["color",3]]],[11,"rotating_color_agents","","",1,[[["usize",15]],["color",3]]],[11,"unzoomed_road_surface","","",1,[[["roadrank",4]],["color",3]]],[11,"zoomed_road_surface","","",1,[[["roadrank",4],["lanetype",4]],["color",3]]],[11,"zoomed_intersection_surface","","",1,[[["roadrank",4]],["color",3]]],[11,"road_center_line","","",1,[[["roadrank",4]],["color",3]]],[11,"general_road_marking","","",1,[[["roadrank",4]],["color",3]]],[11,"soli
"map_model":{"doc":"<code>map_model</code> describes the world where simulations occur. …","i":[[0,"city","map_model","",null,null],[3,"City","map_model::city","A single city (like Seattle) can be broken down into …",null,null],[12,"name","","",0,null],[12,"boundary","","",0,null],[12,"areas","","",0,null],[12,"districts","","The individual maps",0,null],[11,"from_huge_map","","If there\'s a single map covering all the smaller maps, …",0,[[["map",3]],["city",3]]],[11,"from_individual_maps","","Generate a city from a bunch of smaller, individual maps. …",0,[[["cityname",3],["timer",3]],["city",3]]],[0,"connectivity","map_model","",null,null],[0,"walking","map_model::connectivity","",null,null],[3,"WalkingOptions","map_model::connectivity::walking","",null,null],[12,"allow_shoulders","","If true, allow walking on shoulders.",1,null],[12,"walking_speed","","",1,null],[11,"default","","",1,[[],["walkingoptions",3]]],[11,"common_speeds","","",1,[[],["vec",3]]],[11,"default_speed","","",1,[[],["speed",3]]],[3,"Item","","",null,null],[12,"cost","","",2,null],[12,"node","","",2,null],[5,"all_walking_costs_from","","Starting from one building, calculate the cost to all …",null,[[["walkingoptions",3],["map",3],["duration",3],["buildingid",3]],[["buildingid",3],["duration",3],["hashmap",3]]]],[5,"all_walking_costs_from","map_model::connectivity","Starting from one building, calculate the cost to all …",null,[[["walkingoptions",3],["map",3],["duration",3],["buildingid",3]],[["buildingid",3],["duration",3],["hashmap",3]]]],[3,"WalkingOptions","","",null,null],[12,"allow_shoulders","","If true, allow walking on shoulders.",1,null],[12,"walking_speed","","",1,null],[5,"vehicle_cost","","This returns the pathfinding cost of crossing one lane …",null,[[["lane",3],["turn",3],["routingparams",3],["map",3],["pathconstraints",4]],["duration",3]]],[4,"WalkingNode","","",null,null],[13,"SidewalkEndpoint","","false is src_i, true is dst_i",3,null],[13,"RideBus","","",3,null],[13,"LeaveMap","","",3,null],[5,"find_scc","","Calculate the srongy connected components (SCC) of the …",null,[[["map",3],["pathconstraints",4]]]],[5,"all_vehicle_costs_from","","Starting from one building, calculate the cost to all …",null,[[["map",3],["duration",3],["pathconstraints",4],["buildingid",3]],[["buildingid",3],["duration",3],["hashmap",3]]]],[5,"debug_vehicle_costs","","",null,[[["pathrequest",3],["map",3]],["option",4]]],[0,"edits","map_model","Once a Map exists, the player can edit it in the UI …",null,null],[0,"compat","map_model::edits","",null,null],[5,"upgrade","map_model::edits::compat","When the PermanentMapEdits format changes, add a …",null,[[["map",3],["value",4]],[["permanentmapedits",3],["result",6]]]],[5,"walk","","",null,[[["value",4]]]],[5,"fix_offset","","",null,[[["value",4]]]],[5,"fix_intersection_ids","","",null,[[["value",4]]]],[5,"fix_road_direction","","",null,[[["value",4]]]],[5,"fix_old_lane_cmds","","",null,[[["map",3],["value",4]],["result",6]]],[5,"fix_merge_zones","","",null,[[["value",4]]]],[5,"fix_map_name","","",null,[[["value",4]]]],[5,"fix_phase_to_stage","","",null,[[["value",4]]]],[5,"fix_adaptive_stages","","",null,[[["value",4]]]],[5,"fix_plans","","",null,[[["value",4]]]],[5,"fix_city_name","","",null,[[["value",4]]]],[3,"OriginalLane","","",null,null],[12,"parent","","",4,null],[12,"num_fwd","","",4,null],[12,"num_back","","",4,null],[12,"dir","","",4,null],[12,"idx","","",4,null],[3,"ChangeLaneType","","",null,null],[12,"id","","",5,null],[12,"lt","","",5,null],[12,"orig_lt","","",5,null],[3,"ReverseLane","","",null,null],[12,"l","","",6,null],[12,"dst_i","","",6,null],[3,"ChangeSpeedLimit","","",null,null],[12,"id","","",7,null],[12,"new","","",7,null],[12,"old","","",7,null],[3,"ChangeAccessRestrictions","","",null,null],[12,"id","","",8,null],[12,"new","","",8,null],[12,"old","","",8,null],[11,"lookup","","",4,[[["map",3]],["result",6]]],[0,"perma","map_model::edits","",null,null],[3,"PermanentMapEdits","map_model::edits::perma","MapEdits are converted to this before serializing. …",null,null
"one_step_import":{"doc":"","i":[[5,"main","one_step_import","Import a one-shot A/B Street map in a single command. …",null,[[],["result",6]]]],"p":[]},\
"osm_viewer":{"doc":"","i":[[0,"viewer","osm_viewer","",null,null],[6,"App","osm_viewer::viewer","",null,null],[3,"Viewer","","",null,null],[12,"top_panel","","",0,null],[12,"fixed_object_outline","","",0,null],[12,"minimap","","",0,null],[12,"businesses","","",0,null],[11,"new","","",0,[[["simpleapp",3],["eventctx",3]],[["box",3],["state",8]]]],[11,"recalculate_top_panel","","",0,[[["option",4],["widget",3],["simpleapp",3],["eventctx",3]]]],[11,"calculate_tags","","",0,[[["eventctx",3],["simpleapp",3]],["widget",3]]],[3,"BusinessSearch","","",null,null],[12,"counts","","",1,null],[12,"show","","",1,null],[12,"highlight","","",1,null],[12,"hovering_on_amenity","","",1,null],[11,"new","","",1,[[["simpleapp",3],["eventctx",3]],["businesssearch",3]]],[11,"update","","",1,[[["simpleapp",3],["eventctx",3]]]],[11,"hovering_on_amenity","","",1,[[["option",4],["string",3],["simpleapp",3],["eventctx",3]]]],[11,"render","","",1,[[["eventctx",3]],["widget",3]]],[3,"MinimapController","","",null,null],[5,"main","osm_viewer","",null,[[]]],[5,"run","","",null,[[["settings",3]]]],[11,"from","osm_viewer::viewer","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"vzip","","",0,[[]]],[11,"into_any","","",0,[[["box",3],["global",3]],[["global",3],["box",3],["any",8]]]],[11,"into_any_rc","","",0,[[["rc",3]],[["rc",3],["any",8]]]],[11,"as_any","","",0,[[],["any",8]]],[11,"as_any_mut","","",0,[[],["any",8]]],[11,"from","","",1,[[]]],[11,"into","","",1,[[]]],[11,"borrow","","",1,[[]]],[11,"borrow_mut","","",1,[[]]],[11,"try_from","","",1,[[],["result",4]]],[11,"try_into","","",1,[[],["result",4]]],[11,"type_id","","",1,[[],["typeid",3]]],[11,"vzip","","",1,[[]]],[11,"into_any","","",1,[[["box",3],["global",3]],[["global",3],["box",3],["any",8]]]],[11,"into_any_rc","","",1,[[["rc",3]],[["rc",3],["any",8]]]],[11,"as_any","","",1,[[],["any",8]]],[11,"as_any_mut","","",1,[[],["any",8]]],[11,"into_any_arc","","",1,[[["arc",3]],[["arc",3],["any",8]]]],[11,"from","","",2,[[]]],[11,"into","","",2,[[]]],[11,"borrow","","",2,[[]]],[11,"borrow_mut","","",2,[[]]],[11,"try_from","","",2,[[],["result",4]]],[11,"try_into","","",2,[[],["result",4]]],[11,"type_id","","",2,[[],["typeid",3]]],[11,"vzip","","",2,[[]]],[11,"into_any","","",2,[[["box",3],["global",3]],[["global",3],["box",3],["any",8]]]],[11,"into_any_rc","","",2,[[["rc",3]],[["rc",3],["any",8]]]],[11,"as_any","","",2,[[],["any",8]]],[11,"as_any_mut","","",2,[[],["any",8]]],[11,"into_any_arc","","",2,[[["arc",3]],[["arc",3],["any",8]]]],[11,"event","","",0,[[["simpleapp",3],["eventctx",3]],[["transition",4],["simpleapp",3]]]],[11,"draw_baselayer","","",0,[[],["drawbaselayer",4]]],[11,"draw","","",0,[[["simpleapp",3],["gfxctx",3]]]],[11,"has_zorder","","",2,[[["simpleapp",3]],["bool",15]]],[11,"make_legend","","",2,[[["simpleapp",3],["eventctx",3]],["widget",3]]]],"p":[[3,"Viewer"],[3,"BusinessSearch"],[3,"MinimapController"]]},\
"parking_mapper":{"doc":"","i":[[0,"mapper","parking_mapper","",null,null],[6,"App","parking_mapper::mapper","",null,null],[3,"ParkingMapper","","",null,null],[12,"panel","","",0,null],[12,"draw_layer","","",0,null],[12,"show","","",0,null],[12,"selected","","",0,null],[12,"data","","",0,null],[4,"Show","","",null,null],[13,"TODO","","",1,null],[13,"Done","","",1,null],[13,"DividedHighways","","",1,null],[13,"UnmappedDividedHighways","","",1,null],[13,"OverlappingStuff","","",1,null],[4,"Value","","",null,null],[13,"BothSides","","",2,null],[13,"NoStopping","","",2,null],[13,"RightOnly","","",2,null],[13,"LeftOnly","","",2,null],[13,"Complicated","","",2,null],[11,"new","","",0,[[["eventctx",3],["simpleapp",3]],[["box",3],["state",8]]]],[11,"make","","",0,[[["eventctx",3],["show",4],["wayid",3],["btreemap",3],["simpleapp",3],["value",4]],[["box",3],["state",8]]]],[3,"ChangeWay","","",null,null],[12,"panel","","",3,null],[12,"draw","","",3,null],[12,"osm_way_id","","",3,null],[12,"data","","",3,null],[12,"show","","",3,null],[11,"new","","",3,[[["eventctx",3],["show",4],["wayid",3],["btreemap",3],["hashset",3],["simpleapp",3],["value",4]],[["box",3],["state",8]]]],[5,"generate_osmc","","",null,[[["bool",15],["btreemap",3],["timer",3]],["result",6]]],[5,"find_divided_highways","","",null,[[["simpleapp",3]],[["roadid",3],["hashset",3]]]],[5,"find_overlapping_stuff","","",null,[[["simpleapp",3],["timer",3]],[["vec",3],["polygon",3]]]],[5,"main","parking_mapper","",null,[[]]],[11,"from","parking_mapper::mapper","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"vzip","","",0,[[]]],[11,"into_any","","",0,[[["box",3],["global",3]],[["box",3],["any",8],["global",3]]]],[11,"into_any_rc","","",0,[[["rc",3]],[["any",8],["rc",3]]]],[11,"as_any","","",0,[[],["any",8]]],[11,"as_any_mut","","",0,[[],["any",8]]],[11,"from","","",1,[[]]],[11,"into","","",1,[[]]],[11,"to_owned","","",1,[[]]],[11,"clone_into","","",1,[[]]],[11,"borrow","","",1,[[]]],[11,"borrow_mut","","",1,[[]]],[11,"try_from","","",1,[[],["result",4]]],[11,"try_into","","",1,[[],["result",4]]],[11,"type_id","","",1,[[],["typeid",3]]],[11,"vzip","","",1,[[]]],[11,"into_any","","",1,[[["box",3],["global",3]],[["box",3],["any",8],["global",3]]]],[11,"into_any_rc","","",1,[[["rc",3]],[["any",8],["rc",3]]]],[11,"as_any","","",1,[[],["any",8]]],[11,"as_any_mut","","",1,[[],["any",8]]],[11,"into_any_arc","","",1,[[["arc",3]],[["arc",3],["any",8]]]],[11,"from","","",2,[[]]],[11,"into","","",2,[[]]],[11,"to_owned","","",2,[[]]],[11,"clone_into","","",2,[[]]],[11,"borrow","","",2,[[]]],[11,"borrow_mut","","",2,[[]]],[11,"try_from","","",2,[[],["result",4]]],[11,"try_into","","",2,[[],["result",4]]],[11,"type_id","","",2,[[],["typeid",3]]],[11,"vzip","","",2,[[]]],[11,"into_any","","",2,[[["box",3],["global",3]],[["box",3],["any",8],["global",3]]]],[11,"into_any_rc","","",2,[[["rc",3]],[["any",8],["rc",3]]]],[11,"as_any","","",2,[[],["any",8]]],[11,"as_any_mut","","",2,[[],["any",8]]],[11,"into_any_arc","","",2,[[["arc",3]],[["arc",3],["any",8]]]],[11,"from","","",3,[[]]],[11,"into","","",3,[[]]],[11,"borrow","","",3,[[]]],[11,"borrow_mut","","",3,[[]]],[11,"try_from","","",3,[[],["result",4]]],[11,"try_into","","",3,[[],["result",4]]],[11,"type_id","","",3,[[],["typeid",3]]],[11,"vzip","","",3,[[]]],[11,"into_any","","",3,[[["box",3],["global",3]],[["box",3],["any",8],["global",3]]]],[11,"into_any_rc","","",3,[[["rc",3]],[["any",8],["rc",3]]]],[11,"as_any","","",3,[[],["any",8]]],[11,"as_any_mut","","",3,[[],["any",8]]],[11,"clone","","",1,[[],["show",4]]],[11,"clone","","",2,[[],["value",4]]],[11,"eq","","",1,[[["show",4]],["bool",15]]],[11,"eq","","",2,[[["value",4]],["bool",15]]],[11,"fmt","","",1,[[["formatter",3]],["result",6]]],[11,"event","","",0,[[["eventctx",3],["simpleapp",3]],[["simpleapp",3],["transition",4]]]],[11,"draw","","",0,[[["gfxctx",3],["simpleapp",3]]]],[11,"event","","",3,[[["eventctx",3
"pick_geofabrik":{"doc":"","i":[[5,"main","pick_geofabrik","Takes an osmosis polygon boundary file as input, then …",null,[[],["result",6]]],[5,"load_remote_geojson","","",null,[[["string",3],["str",15]]]],[5,"find_matching_regions","","",null,[[["geojson",4],["lonlat",3]],["vec",3]]]],"p":[]},\
"popdat":{"doc":"popdat (\\\"population data\\\") generates <code>Scenarios</code> given a …","i":[[0,"activities","popdat","",null,null],[5,"rand_duration","popdat::activities","",null,[[["duration",3],["xorshiftrng",3]],["duration",3]]],[5,"rand_time","","",null,[[["duration",3],["xorshiftrng",3]],["time",3]]],[5,"minutes","","",null,[[["usize",15]],["duration",3]]],[5,"hours","","",null,[[["usize",15]],["duration",3]]],[0,"distribute_people","popdat","",null,null],[5,"assign_people_to_houses","popdat::distribute_people","",null,[[["config",3],["map",3],["censusarea",3],["vec",3],["xorshiftrng",3]],[["censusperson",3],["vec",3]]]],[5,"distribute_population_to_homes","","Starting from some number of total people living in a …",null,[[["f64",15],["usize",15],["map",3],["polygon",3],["xorshiftrng",3]],["vec",3]]],[0,"import_census","popdat","",null,null],[0,"make_person","","",null,null],[5,"make_people","popdat::make_person","",null,[[["censusperson",3],["timer",3],["config",3],["map",3],["vec",3],["xorshiftrng",3]],[["vec",3],["personspec",3]]]],[3,"PersonFactory","","",null,null],[12,"activity_to_buildings","","",0,null],[11,"new","","",0,[[["map",3]]]],[11,"activity_to_buildings","","",0,[[["map",3]],[["activity",4],["hashmap",3],["vec",3]]]],[11,"find_building_for_activity","","",0,[[["tripendpoint",4],["map",3],["activity",4],["xorshiftrng",3]],[["option",4],["buildingid",3]]]],[11,"make_person","","",0,[[["censusperson",3],["vec",3],["map",3],["config",3],["xorshiftrng",3]],["personspec",3]]],[5,"pick_mode","","",null,[[["tripendpoint",4],["config",3],["map",3],["xorshiftrng",3]],["tripmode",4]]],[0,"od","popdat","This is an alternative pipeline for generating a …",null,null],[3,"DesireLine","popdat::od","This describes some number of commuters living in some …",null,null],[12,"home_zone","","",1,null],[12,"work_zone","","",1,null],[12,"mode","","",1,null],[12,"number_commuters","","",1,null],[3,"Options","","",null,null],[12,"departure_time","","When should somebody depart from home to work?",2,null],[12,"work_duration","","How long should somebody work before returning home?",2,null],[11,"default","","",2,[[],["options",3]]],[5,"disaggregate","","Generates a scenario from aggregated origin/destination …",null,[[["desireline",3],["options",3],["vec",3],["xorshiftrng",3],["string",3],["timer",3],["polygon",3],["map",3],["hashmap",3]],[["vec",3],["personspec",3]]]],[3,"Zone","","",null,null],[12,"polygon","","",3,null],[12,"pct_overlap","","",3,null],[12,"homes","","",3,null],[12,"workplaces","","",3,null],[12,"borders","","",3,null],[5,"create_zones","","",null,[[["string",3],["polygon",3],["map",3],["hashmap",3]],[["string",3],["hashmap",3],["zone",3]]]],[11,"pick_home","","Returns endpoints to (leave home, goto home). These\'re …",3,[[["map",3],["xorshiftrng",3],["tripmode",4]],["option",4]]],[11,"pick_workplace","","Returns endpoints to (leave work, goto work). These\'re …",3,[[["map",3],["xorshiftrng",3],["tripmode",4]],["option",4]]],[11,"pick_borders","","",3,[[["map",3],["xorshiftrng",3],["tripmode",4]],["option",4]]],[3,"NormalDistribution","","A normal distribution of Durations.",null,null],[12,"mean","","",4,null],[12,"std_deviation","","",4,null],[11,"new","","",4,[[["duration",3]],["normaldistribution",3]]],[11,"sample","","",4,[[["xorshiftrng",3]],["duration",3]]],[5,"distribute_population_to_homes","popdat","Starting from some number of total people living in a …",null,[[["f64",15],["usize",15],["map",3],["polygon",3],["xorshiftrng",3]],["vec",3]]],[3,"CensusArea","","Represents aggregate demographic data for some part of a …",null,null],[12,"polygon","","",5,null],[12,"population","","",5,null],[3,"CensusPerson","","Demographic information for a single person",null,null],[12,"home","","",6,null],[12,"age","","",6,null],[12,"employed","","",6,null],[12,"owns_car","","",6,null],[4,"PersonType","","It might be useful to classify a CensusPerson into …",null,null],[13,"Student","","",7,null],[13,"Worker","","",7,null],[3,"Schedule","","A single person\'s daily schedule. It\'s assumed
"random_scenario":{"doc":"","i":[[5,"main","random_scenario","",null,[[]]]],"p":[]},\
"santa":{"doc":"","i":[[0,"after_level","santa","",null,null],[17,"ZOOM","santa::after_level","",null,null],[3,"Strategize","","",null,null],[12,"unlock_messages","","",0,null],[12,"draw_all","","",0,null],[11,"new","","",0,[[["usize",15],["recordpath",3],["simpleapp",3],["level",3],["eventctx",3],["buildings",3]],[["box",3],["state",8]]]],[3,"Results","","",null,null],[11,"new","","",1,[[["usize",15],["simpleapp",3],["level",3],["eventctx",3]],[["box",3],["state",8]]]],[3,"RecordPath","","",null,null],[12,"pts","","",2,null],[11,"new","","",2,[[],["recordpath",3]]],[11,"add_pt","","",2,[[["pt2d",3]]]],[11,"render","","",2,[[["distance",3]],["polygon",3]]],[0,"animation","santa","",null,null],[3,"Animator","santa::animation","",null,null],[12,"active","","",3,null],[12,"draw_mapspace","","",3,null],[12,"draw_screenspace","","",3,null],[3,"Animation","","",null,null],[12,"start","","",4,null],[12,"end","","",4,null],[12,"effect","","",4,null],[12,"screenspace","","",4,null],[4,"Effect","","",null,null],[13,"Scale","","",5,null],[12,"orig","santa::animation::Effect","",6,null],[12,"center","","",6,null],[12,"lerp_scale","","",6,null],[13,"FollowPath","santa::animation","",5,null],[12,"color","santa::animation::Effect","",7,null],[12,"width","","",7,null],[12,"pl","","",7,null],[13,"Flash","santa::animation","",5,null],[12,"orig","santa::animation::Effect","",8,null],[12,"alpha_scale","","",8,null],[12,"cycles","","",8,null],[11,"new","santa::animation","",3,[[["eventctx",3]],["animator",3]]],[11,"add","","Pass in a future value for <code>now</code> to schedule a delayed …",3,[[["effect",4],["time",3],["duration",3]]]],[11,"add_screenspace","","",3,[[["effect",4],["time",3],["duration",3]]]],[11,"event","","",3,[[["time",3],["eventctx",3]]]],[11,"draw","","",3,[[["gfxctx",3]]]],[11,"is_done","","",3,[[],["bool",15]]],[11,"render","","",5,[[["f64",15],["geombatch",3]]]],[3,"SnowEffect","","",null,null],[12,"rng","","",9,null],[12,"flakes","","",9,null],[12,"draw","","",9,null],[3,"Snowflake","","",null,null],[12,"start","","",10,null],[12,"initial_pos","","",10,null],[12,"fall_speed","","",10,null],[12,"swoop_period","","",10,null],[12,"max_swoop","","",10,null],[11,"pos","","",10,[[["time",3]],["pt2d",3]]],[11,"new","","",9,[[["eventctx",3]],["snoweffect",3]]],[11,"spawn_new","","",9,[[["pt2d",3],["time",3]],["snowflake",3]]],[11,"event","","",9,[[["time",3],["eventctx",3]]]],[11,"draw","","",9,[[["gfxctx",3]]]],[0,"before_level","santa","",null,null],[17,"ZOOM","santa::before_level","",null,null],[3,"Picker","","",null,null],[12,"vehicle_panel","","",11,null],[12,"instructions_panel","","",11,null],[12,"upzone_panel","","",11,null],[12,"level","","",11,null],[12,"bldgs","","",11,null],[12,"current_picks","","",11,null],[12,"draw_start","","",11,null],[11,"new","","",11,[[["level",3],["simpleapp",3],["eventctx",3]],[["box",3],["state",8]]]],[11,"randomly_pick_upzones","","",11,[[["simpleapp",3]]]],[5,"make_vehicle_panel","","",null,[[["simpleapp",3],["eventctx",3]],["panel",3]]],[5,"make_upzone_panel","","",null,[[["usize",15],["simpleapp",3],["eventctx",3]],["panel",3]]],[5,"explain_upzoning","","",null,[[["eventctx",3]],[["simpleapp",3],["transition",4]]]],[0,"buildings","santa","",null,null],[3,"Buildings","santa::buildings","",null,null],[12,"buildings","","",12,null],[12,"draw_all","","",12,null],[12,"total_housing_units","","",12,null],[12,"upzones","","",12,null],[4,"BldgState","","",null,null],[13,"Undelivered","","",13,null],[13,"Store","","",13,null],[13,"Done","","",13,null],[13,"Ignore","","",13,null],[11,"new","","",12,[[["simpleapp",3],["buildingid",3],["hashset",3],["eventctx",3]],["buildings",3]]],[11,"all_stores","","",12,[[],[["vec",3],["buildingid",3]]]],[11,"draw_done_houses","","",12,[[["simpleapp",3],["eventctx",3]],["drawable",3]]],[0,"controls","santa","",null,null],[17,"HACK","santa::controls","",null,null],[3,"InstantController","","",null,null],[12,"facing","","Which of the 8 directions are we facing, based on the …",14,null],[11,"new","","",14,[[],["instantcontroller",3]]],[11,"displacement"
"sim":{"doc":"The sim crate runs a traffic simulation on top of the …","i":[[0,"analytics","sim","",null,null],[3,"Analytics","sim::analytics","As a simulation runs, different pieces emit Events. The …",null,null],[12,"road_thruput","","",0,null],[12,"intersection_thruput","","",0,null],[12,"traffic_signal_thruput","","",0,null],[12,"demand","","Most fields in Analytics are cumulative over time, but …",0,null],[12,"bus_arrivals","","",0,null],[12,"passengers_boarding","","For each passenger boarding, how long did they wait at …",0,null],[12,"passengers_alighting","","",0,null],[12,"started_trips","","",0,null],[12,"finished_trips","","Finish time, ID, mode, trip duration if successful (or …",0,null],[12,"trip_intersection_delays","","Records how long was spent waiting at each turn …",0,null],[12,"lane_speed_percentage","","Records the average speed/maximum speed for each lane If …",0,null],[12,"trip_log","","",0,null],[12,"intersection_delays","","Only for traffic signals. The u8 is the movement index …",0,null],[12,"parking_lane_changes","","Per parking lane or lot, when does a spot become filled …",0,null],[12,"parking_lot_changes","","",0,null],[12,"alerts","","",0,null],[12,"record_anything","","For benchmarking, we may want to disable collecting data.",0,null],[11,"new","","",0,[[["bool",15]],["analytics",3]]],[11,"event","","",0,[[["event",4],["time",3],["map",3]]]],[11,"record_demand","","",0,[[["map",3],["path",3]]]],[11,"finished_trip_time","","Ignores the current time. Returns None for cancelled …",0,[[["tripid",3]],[["option",4],["duration",3]]]],[11,"both_finished_trips","","Returns pairs of trip times for finished trips in both …",0,[[["analytics",3],["time",3]],["vec",3]]],[11,"get_trip_phases","","If calling on prebaked Analytics, be careful to pass in …",0,[[["map",3],["tripid",3]],[["vec",3],["tripphase",3]]]],[11,"get_all_trip_phases","","",0,[[],[["btreemap",3],["vec",3],["tripid",3]]]],[11,"active_agents","","",0,[[["time",3]],["vec",3]]],[11,"parking_lane_availability","","Returns the free spots over time",0,[[["usize",15],["time",3],["laneid",3]],["vec",3]]],[11,"parking_lot_availability","","",0,[[["usize",15],["parkinglotid",3],["time",3]],["vec",3]]],[11,"parking_spot_availability","","",0,[[["usize",15],["vec",3],["time",3]],["vec",3]]],[3,"TripPhase","","",null,null],[12,"start_time","","",1,null],[12,"end_time","","",1,null],[12,"path","","",1,null],[12,"has_path_req","","",1,null],[12,"phase_type","","",1,null],[3,"TimeSeriesCount","","See https://github.com/a-b-street/abstreet/issues/85",null,null],[12,"counts","","(Road or intersection, type, hour block) -> count for …",2,null],[12,"raw","","Very expensive to store, so it\'s optional. But useful to …",2,null],[11,"new","","",2,[[],["timeseriescount",3]]],[11,"record","","",2,[[["usize",15],["time",3],["agenttype",4]]]],[11,"total_for","","",2,[[],["usize",15]]],[11,"total_for_with_agent_types","","",2,[[["btreeset",3],["agenttype",4]],["usize",15]]],[11,"total_for_by_time","","",2,[[["time",3]],["usize",15]]],[11,"all_total_counts","","",2,[[["btreeset",3]],["counter",3]]],[11,"count_per_hour","","",2,[[["time",3]],["vec",3]]],[11,"raw_throughput","","",2,[[["time",3]],["vec",3]]],[3,"Window","","",null,null],[12,"times","","",3,null],[12,"window_size","","",3,null],[11,"new","","",3,[[["duration",3]],["window",3]]],[11,"add","","Returns the count at time",3,[[["time",3]],["usize",15]]],[11,"count","","Grab the count at this time, but don\'t add a new time",3,[[["time",3]],["usize",15]]],[0,"cap","sim","",null,null],[6,"ZoneIdx","sim::cap","",null,null],[3,"CapSimState","","Dynamically limit driving trips that meet different …",null,null],[12,"lane_to_zone","","",4,null],[12,"zones","","",4,null],[12,"cancel_drivers_delay_threshold","","",4,null],[12,"delay_trips_instead_of_cancelling","","",4,null],[4,"CapResult","","",null,null],[13,"OK","","",5,null],[13,"Reroute","","",5,null],[13,"Cancel","","",5,null],[12,"reason","sim::cap::CapResult","",6,null],[13,"Delay","sim::cap","",5,null],[3,"Zone","","",null,nul
"sumo":{"doc":"This crate provides a Rust interface to different parts …","i":[[0,"normalize","sumo","Transforms a <code>raw::Network</code> into a <code>Network</code> that\'s easier to …",null,null],[0,"raw","","Parse SUMO networks from XML without making any …",null,null],[3,"Network","sumo::raw","",null,null],[12,"location","","",0,null],[12,"types","","",0,null],[12,"edges","","",0,null],[12,"junctions","","",0,null],[12,"connections","","",0,null],[3,"Location","","",null,null],[12,"converted_boundary","","",1,null],[12,"orig_boundary","","",1,null],[11,"parse","","",0,[[["timer",3],["str",15]],[["network",3],["result",6]]]],[3,"EdgeID","","",null,null],[12,"0","","",2,null],[3,"NodeID","","",null,null],[12,"0","","",3,null],[3,"LaneID","","",null,null],[12,"0","","",4,null],[3,"InternalLaneID","","",null,null],[12,"0","","",5,null],[3,"Type","","",null,null],[12,"id","","",6,null],[12,"priority","","",6,null],[12,"speed","","",6,null],[12,"width","","",6,null],[12,"allow","","",6,null],[12,"disallow","","",6,null],[3,"Edge","","",null,null],[12,"id","","",7,null],[12,"name","","",7,null],[12,"from","","",7,null],[12,"to","","",7,null],[12,"priority","","",7,null],[12,"function","","",7,null],[12,"lanes","","",7,null],[12,"edge_type","","",7,null],[12,"spread_type","","",7,null],[12,"shape","","",7,null],[4,"Function","","",null,null],[13,"Normal","","",8,null],[13,"Internal","","",8,null],[4,"SpreadType","","",null,null],[13,"Right","","",9,null],[13,"Center","","",9,null],[13,"RoadCenter","","",9,null],[3,"Lane","","",null,null],[12,"id","","This could be a LaneID or an InternalLaneID. It\'ll be …",10,null],[12,"index","","",10,null],[12,"speed","","",10,null],[12,"length","","",10,null],[12,"width","","",10,null],[12,"shape","","",10,null],[12,"allow","","",10,null],[12,"disallow","","",10,null],[3,"Junction","","",null,null],[12,"id","","",11,null],[12,"junction_type","","",11,null],[12,"x","","",11,null],[12,"y","","",11,null],[12,"incoming_lanes","","",11,null],[12,"internal_lanes","","",11,null],[12,"shape","","",11,null],[11,"pt","","",11,[[],["pt2d",3]]],[3,"Connection","","",null,null],[12,"from","","",12,null],[12,"from_lane","","",12,null],[12,"to","","",12,null],[12,"to_lane","","",12,null],[12,"via","","",12,null],[12,"dir","","",12,null],[11,"from_lane","","",12,[[],["laneid",3]]],[11,"to_lane","","",12,[[],["laneid",3]]],[4,"Direction","","",null,null],[13,"Straight","","",13,null],[13,"Turn","","",13,null],[13,"Left","","",13,null],[13,"Right","","",13,null],[13,"PartiallyLeft","","",13,null],[13,"PartiallyRight","","",13,null],[13,"Invalid","","",13,null],[5,"parse_f64s","","",null,[[["deserializer",8]],[["result",4],["vec",3]]]],[5,"parse_bounds","","",null,[[["deserializer",8]],[["bounds",3],["result",4]]]],[5,"parse_gps_bounds","","",null,[[["deserializer",8]],[["gpsbounds",3],["result",4]]]],[5,"parse_list_vehicles","","",null,[[["deserializer",8]],[["vec",3],["result",4]]]],[5,"parse_list_lanes","","",null,[[["deserializer",8]],[["vec",3],["result",4]]]],[5,"parse_list_internal_lanes","","",null,[[["deserializer",8]],[["vec",3],["result",4]]]],[5,"parse_pts","","",null,[[["deserializer",8]],[["vec",3],["result",4]]]],[5,"parse_pl","","",null,[[["deserializer",8]],[["result",6],["result",4]]]],[5,"must_parse_pl","","",null,[[["deserializer",8]],[["option",4],["result",4]]]],[5,"parse_polygon","","",null,[[["deserializer",8]],[["result",4],["option",4]]]],[5,"parse_pt","","",null,[[["str",15]],[["pt2d",3],["result",6]]]],[3,"Connection","sumo","",null,null],[12,"from","","",12,null],[12,"from_lane","","",12,null],[12,"to","","",12,null],[12,"to_lane","","",12,null],[12,"via","","",12,null],[12,"dir","","",12,null],[4,"Direction","","",null,null],[13,"Straight","","",13,null],[13,"Turn","","",13,null],[13,"Left","","",13,null],[13,"Right","","",13,null],[13,"PartiallyLeft","","",13,null],[13,"PartiallyRight","","",13,null],[13,"Invalid","","",13,null],[3,"EdgeID","","",null,null],[12,"0","","",2,null],[3,"InternalLaneID","","",null,null],[12,"0","","",5,null],[3,"LaneID","","",null,null
"tests":{"doc":"Integration tests","i":[[5,"main","tests","",null,[[],["result",6]]],[5,"test_map_importer","","Test the map pipeline by importing simple, handcrafted …",null,[[],["result",6]]],[5,"import_map","","Run the contents of a .osm through the full map importer …",null,[[["string",3]],["map",3]]],[5,"dump_turn_goldenfile","","Verify what turns are generated by writing (from lane, to …",null,[[["map",3]],["result",6]]],[5,"smoke_test","","Simulate an hour on every map.",null,[[],["result",6]]],[5,"dump_route_goldenfile","","Describe all public transit routes and keep under version …",null,[[["map",3]],["result",6]]],[5,"check_proposals","","Verify all edits under version control can be correctly …",null,[[],["result",6]]],[5,"test_lane_changing","","Verify lane-chaging behavior is overall reasonable, by …",null,[[["map",3]],["result",6]]]],"p":[]},\
"traffic_seitan":{"doc":"","i":[[5,"main","traffic_seitan","",null,[[]]],[5,"run","","",null,[[["map",3],["sim",3],["timer",3],["xorshiftrng",3]]]],[5,"alter_turn_destinations","","",null,[[["sim",3],["mapedits",3],["map",3],["xorshiftrng",3]]]],[5,"nuke_random_parking","","",null,[[["mapedits",3],["map",3],["xorshiftrng",3]]]]],"p":[]},\
"traffic_signal_data":{"doc":"A representation of traffic signal configuration that …","i":[[3,"TrafficSignal","traffic_signal_data","",null,null],[12,"intersection_osm_node_id","","The ID of the OSM node representing the intersection with …",0,null],[12,"plans","","The traffic signal uses configuration from one plan at a …",0,null],[3,"Plan","","A plan describes how a traffic signal is configured …",null,null],[12,"start_time_seconds","","This plan takes effect at this local time, measured in …",1,null],[12,"stages","","The traffic signal repeatedly cycles through these …",1,null],[12,"offset_seconds","","Relative to a central clock, delay the first stage by …",1,null],[3,"Stage","","A traffic signal is in one stage at any time. The stage …",null,null],[12,"protected_turns","","During this stage, these turns can be performed with the …",2,null],[12,"permitted_turns","","During this stage, these turns can be performed after …",2,null],[12,"stage_type","","The stage lasts this long before moving to the next one.",2,null],[4,"StageType","","How long a stage lasts before moving to the next one.",null,null],[13,"Fixed","","A fixed number of seconds.",3,null],[13,"Variable","","Minimum, Delay, Additional Minimum is the minimum cycle …",3,null],[3,"Turn","","A movement through an intersection.",null,null],[12,"from","","The movement begins at the end of this road segment.",4,null],[12,"to","","The movement ends at the beginning of this road segment.",4,null],[12,"intersection_osm_node_id","","The ID of the OSM node representing the intersection. …",4,null],[12,"is_crosswalk","","True iff the movement is along a crosswalk. Note that …",4,null],[3,"DirectedRoad","","A road segment connecting two intersections, and a …",null,null],[12,"osm_way_id","","The ID of the OSM way representing the road.",5,null],[12,"osm_node1","","The ID of the OSM node at the start of this road segment.",5,null],[12,"osm_node2","","The ID of the OSM node at the end of this road segment.",5,null],[12,"is_forwards","","The direction along the road segment. See …",5,null],[7,"DATA","","",null,null],[5,"load_all_data","","Returns all traffic signal data compiled into this build, …",null,[[],[["btreemap",3],["error",3],["result",4]]]],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"to_owned","","",0,[[]]],[11,"clone_into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"from","","",1,[[]]],[11,"into","","",1,[[]]],[11,"to_owned","","",1,[[]]],[11,"clone_into","","",1,[[]]],[11,"borrow","","",1,[[]]],[11,"borrow_mut","","",1,[[]]],[11,"try_from","","",1,[[],["result",4]]],[11,"try_into","","",1,[[],["result",4]]],[11,"type_id","","",1,[[],["typeid",3]]],[11,"from","","",2,[[]]],[11,"into","","",2,[[]]],[11,"to_owned","","",2,[[]]],[11,"clone_into","","",2,[[]]],[11,"borrow","","",2,[[]]],[11,"borrow_mut","","",2,[[]]],[11,"try_from","","",2,[[],["result",4]]],[11,"try_into","","",2,[[],["result",4]]],[11,"type_id","","",2,[[],["typeid",3]]],[11,"from","","",3,[[]]],[11,"into","","",3,[[]]],[11,"to_owned","","",3,[[]]],[11,"clone_into","","",3,[[]]],[11,"borrow","","",3,[[]]],[11,"borrow_mut","","",3,[[]]],[11,"try_from","","",3,[[],["result",4]]],[11,"try_into","","",3,[[],["result",4]]],[11,"type_id","","",3,[[],["typeid",3]]],[11,"from","","",4,[[]]],[11,"into","","",4,[[]]],[11,"to_owned","","",4,[[]]],[11,"clone_into","","",4,[[]]],[11,"borrow","","",4,[[]]],[11,"borrow_mut","","",4,[[]]],[11,"try_from","","",4,[[],["result",4]]],[11,"try_into","","",4,[[],["result",4]]],[11,"type_id","","",4,[[],["typeid",3]]],[11,"from","","",5,[[]]],[11,"into","","",5,[[]]],[11,"to_owned","","",5,[[]]],[11,"clone_into","","",5,[[]]],[11,"borrow","","",5,[[]]],[11,"borrow_mut","","",5,[[]]],[11,"try_from","","",5,[[],["result",4]]],[11,"try_into","","",5,[[],["result",4]]],[11,"type_id","","",5,[[],["typeid",3]]],[11,"clone","","",0,[[],["trafficsignal",3]]],[11,"clone","","",1,[
"updater":{"doc":"","i":[[17,"MD5_BUF_READ_SIZE","updater","",null,null],[5,"main","","",null,[[]]],[5,"download_updates","","",null,[[["string",3]]]],[5,"just_compare","","",null,[[]]],[5,"upload","","",null,[[["string",3]]]],[5,"opt_into_all","","",null,[[]]],[5,"generate_manifest","","",null,[[],["manifest",3]]],[5,"md5sum","","Returns (checksum, uncompressed_size_bytes)",null,[[["str",15]]]],[5,"rm","","",null,[[["str",15]]]],[5,"download_file","","",null,[[["str",15]]]],[5,"remove_empty_directories","","",null,[[["str",15]]]]],"p":[]},\
"widgetry":{"doc":"WidgetsIf none of these do what you need, implementing a …","i":[[0,"table","widgetry","",null,null],[3,"Table","widgetry::table","",null,null],[12,"id","","",0,null],[12,"data","","",0,null],[12,"label_per_row","","",0,null],[12,"columns","","",0,null],[12,"filter","","",0,null],[12,"sort_by","","",0,null],[12,"descending","","",0,null],[12,"skip","","",0,null],[4,"Col","","",null,null],[13,"Static","","",1,null],[13,"Sortable","","",1,null],[3,"Filter","","",null,null],[12,"state","","",2,null],[12,"to_controls","","",2,null],[12,"from_controls","","",2,null],[12,"apply","","",2,null],[0,"app_state","widgetry","A widgetry application splits its state into two pieces: …",null,null],[8,"SharedAppState","widgetry::app_state","Any data that should last the entire lifetime of the …",null,null],[11,"before_event","","Before <code>State::event</code> is called, call this.",3,[[]]],[11,"draw_default","","When DrawBaselayer::DefaultDraw is called, run this.",3,[[["gfxctx",3]]]],[11,"dump_before_abort","","Will be called if <code>State::event</code> or <code>State::draw</code> panics.",3,[[["canvas",3]]]],[11,"before_quit","","Called before a normal exit, like window close",3,[[["canvas",3]]]],[3,"App","","",null,null],[12,"states","","A stack of states",4,null],[12,"shared_app_state","","",4,null],[11,"event","","",4,[[["eventctx",3]]]],[11,"draw","","",4,[[["gfxctx",3]]]],[11,"execute_transition","","If true, then the top-most state on the stack needs to be …",4,[[["eventctx",3],["transition",4]],["bool",15]]],[4,"DrawBaselayer","","Before <code>State::draw</code> is called, draw something else.",null,null],[13,"DefaultDraw","","Call <code>SharedAppState::draw_default</code>.",5,null],[13,"Custom","","Don\'t draw anything.",5,null],[13,"PreviousState","","Call the previous state\'s <code>draw</code>. This won\'t recurse, even …",5,null],[8,"State","","A temporary state of an application. There\'s a stack of …",null,null],[10,"event","","Respond to a UI event, such as input or time passing.",6,[[["eventctx",3]],["transition",4]]],[10,"draw","","Draw",6,[[["gfxctx",3]]]],[11,"draw_baselayer","","Specifies what to draw before draw()",6,[[],["drawbaselayer",4]]],[11,"on_destroy","","Before this state is popped or replaced, call this.",6,[[["eventctx",3]]]],[11,"is","","Returns true if the trait object wraps an object of type …",6,[[],["bool",15]]],[11,"downcast","","Returns a boxed object from a boxed trait object if the …",6,[[["box",3]],[["box",3],["box",3],["result",4]]]],[11,"downcast_rc","","Returns an <code>Rc</code>-ed object from an <code>Rc</code>-ed trait object if the …",6,[[["rc",3]],[["result",4],["rc",3],["rc",3]]]],[11,"downcast_ref","","Returns a reference to the object within the trait object …",6,[[],["option",4]]],[11,"downcast_mut","","Returns a mutable reference to the object within the …",6,[[],["option",4]]],[4,"Transition","","When a state responds to an event, it can specify some …",null,null],[13,"Keep","","Don\'t do anything, keep the current state as the active …",7,null],[13,"KeepWithMouseover","","Keep the current state as the active one, but immediately …",7,null],[13,"Pop","","Destroy the current state, and resume from the previous …",7,null],[13,"ModifyState","","If a state needs to pass data back to its parent, use …",7,null],[13,"ReplaceWithData","","",7,null],[13,"Push","","Push a new active state on the top of the stack.",7,null],[13,"Replace","","Replace the current state with a new one. Equivalent to …",7,null],[13,"Clear","","Replace the entire stack of states with this stack.",7,null],[13,"Multi","","Execute a sequence of transitions in order.",7,null],[8,"SimpleState","","Many states fit a pattern of managing a single panel, …",null,null],[10,"on_click","","Called when something on the panel has been clicked. …",8,[[["eventctx",3],["panel",3],["str",15]],["transition",4]]],[11,"panel_changed","","Called when something on the panel has changed. If a …",8,[[["eventctx",3],["panel",3]],[["transition",4],["option",4]]]],[11,"on_mouseo
"widgetry_demo":{"doc":"","i":[[5,"main","widgetry_demo","",null,[[]]],[5,"run","","",null,[[["settings",3]]]],[3,"App","","",null,null],[3,"Demo","","",null,null],[12,"controls","","",0,null],[12,"timeseries_panel","","",0,null],[12,"scrollable_canvas","","",0,null],[12,"texture_demo","","",0,null],[12,"elapsed","","",0,null],[12,"tabs","","",0,null],[11,"new","","",0,[[["eventctx",3]]]],[11,"make_timeseries_panel","","",0,[[["eventctx",3]],["panel",3]]],[11,"redraw_stopwatch","","",0,[[["eventctx",3]]]],[5,"setup_texture_demo","","",null,[[["eventctx",3],["texture",3]],["drawable",3]]],[5,"setup_scrollable_canvas","","",null,[[["eventctx",3]],["drawable",3]]],[5,"make_tabs","","",null,[[["eventctx",3]],["tabcontroller",3]]],[5,"make_controls","","",null,[[["tabcontroller",3],["eventctx",3]],["panel",3]]],[11,"from","","",1,[[]]],[11,"into","","",1,[[]]],[11,"borrow","","",1,[[]]],[11,"borrow_mut","","",1,[[]]],[11,"try_from","","",1,[[],["result",4]]],[11,"try_into","","",1,[[],["result",4]]],[11,"type_id","","",1,[[],["typeid",3]]],[11,"vzip","","",1,[[]]],[11,"into_any","","",1,[[["box",3],["global",3]],[["box",3],["global",3],["any",8]]]],[11,"into_any_rc","","",1,[[["rc",3]],[["rc",3],["any",8]]]],[11,"as_any","","",1,[[],["any",8]]],[11,"as_any_mut","","",1,[[],["any",8]]],[11,"into_any_arc","","",1,[[["arc",3]],[["any",8],["arc",3]]]],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"vzip","","",0,[[]]],[11,"into_any","","",0,[[["box",3],["global",3]],[["box",3],["global",3],["any",8]]]],[11,"into_any_rc","","",0,[[["rc",3]],[["rc",3],["any",8]]]],[11,"as_any","","",0,[[],["any",8]]],[11,"as_any_mut","","",0,[[],["any",8]]],[11,"event","","",0,[[["eventctx",3],["app",3]],[["transition",4],["app",3]]]],[11,"draw","","",0,[[["gfxctx",3],["app",3]]]]],"p":[[3,"Demo"],[3,"App"]]}\
}');
addSearchOptions(searchIndex);initSearch(searchIndex);