Downloads bytes from a URL. If quiet is false, prints progress. This must be called with a
tokio runtime somewhere.
\ No newline at end of file
diff --git a/rustdoc/abstio/download/fn.download_to_file.html b/rustdoc/abstio/download/fn.download_to_file.html
index e1fc55a8dd..67bf13471d 100644
--- a/rustdoc/abstio/download/fn.download_to_file.html
+++ b/rustdoc/abstio/download/fn.download_to_file.html
@@ -1,6 +1,6 @@
abstio::download::download_to_file - Rust
Downloads a file. If quiet is false, prints progress. This must be called with a tokio
runtime somewhere.
\ No newline at end of file
diff --git a/rustdoc/abstio/download/index.html b/rustdoc/abstio/download/index.html
index 1e2eb86d98..a120584f92 100644
--- a/rustdoc/abstio/download/index.html
+++ b/rustdoc/abstio/download/index.html
@@ -1,7 +1,7 @@
abstio::download - Rust
Downloads a file. If quiet is false, prints progress. This must be called with a tokio
diff --git a/rustdoc/abstio/fn.download_bytes.html b/rustdoc/abstio/fn.download_bytes.html
index 5d5fb03250..85f88dc6e5 100644
--- a/rustdoc/abstio/fn.download_bytes.html
+++ b/rustdoc/abstio/fn.download_bytes.html
@@ -1,6 +1,6 @@
Downloads bytes from a URL. If quiet is false, prints progress. This must be called with a
tokio runtime somewhere.
\ No newline at end of file
diff --git a/rustdoc/abstio/fn.download_to_file.html b/rustdoc/abstio/fn.download_to_file.html
index e7d0413d50..2fa1c8cf7c 100644
--- a/rustdoc/abstio/fn.download_to_file.html
+++ b/rustdoc/abstio/fn.download_to_file.html
@@ -1,6 +1,6 @@
abstio::download_to_file - Rust
Downloads a file. If quiet is false, prints progress. This must be called with a tokio
runtime somewhere.
\ No newline at end of file
diff --git a/rustdoc/game/pregame/built_info/constant.BUILT_TIME_UTC.html b/rustdoc/game/pregame/built_info/constant.BUILT_TIME_UTC.html
index 7ffc266d92..94ca11a81c 100644
--- a/rustdoc/game/pregame/built_info/constant.BUILT_TIME_UTC.html
+++ b/rustdoc/game/pregame/built_info/constant.BUILT_TIME_UTC.html
@@ -1,5 +1,5 @@
game::pregame::built_info::BUILT_TIME_UTC - Rust
\ No newline at end of file
diff --git a/rustdoc/search-index.js b/rustdoc/search-index.js
index 429634c3fe..9970278f60 100644
--- a/rustdoc/search-index.js
+++ b/rustdoc/search-index.js
@@ -1,5 +1,5 @@
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]]]],[5,"list_dir","","Returns full paths",null,[[["string",3]],[["string",3],["vec",3]]]],[5,"slurp_file","","",null,[[["asref",8]],[["vec",3],["result",6]]]],[5,"inner_slurp_file","","",null,[[],[["vec",3],["result",6]]]],[5,"maybe_read_binary","","",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"maybe_write_json","","",null,[[],["result",6]]],[5,"write_json","","",null,[[["string",3]]]],[5,"maybe_write_binary","","",null,[[],["result",6]]],[5,"write_binary","","",null,[[["string",3]]]],[5,"delete_file","","Idempotent",null,[[["asref",8]]]],[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,[[],["result",6]]],[0,"download","abstio","",null,null],[5,"download_bytes","abstio::download","Downloads bytes from a URL. If quiet is false, prints …",null,[[["asref",8]]]],[5,"download_to_file","","Downloads a file. If quiet is false, prints progress. …",null,[[["string",3],["asref",8]]]],[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",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,[[]]],[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]],["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,[[],["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,[[],[["vec",3],["cityname",3]]]],[11,"list_all_cities_from_importer_config","","Returns all city names based on importer config.",6,[[],[["vec",3],["cityname",3]]]],[11,"parse","","Parses a CityName from something like \\\"gb/london\\\"; the …",6,[[],[["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]],["string",3]]],[3,"MapName","","A single map is identified using this.",null,null],[12,"city","","",7,null],[12,"map","","The name of the map within the city, in filename-friendly …",7,null],[11,"new","","Create a MapName from a country code, city, and map name.",7,[[],["mapname",3]]],[11,"from_city","","Create a MapName from a city and map within that city.",7,[[["cityname",3]],["mapname",3]]],[11,"seattle","","Convenient constructor for the main city of the game.",7,[[],["mapname",3]]],[11,"describe","","Stringify the map name for debug messages. Don\'t …",7,[[],["string",3]]],[11,"as_filename","","Stringify the map name for filenames.",7,[[],["string",3]]],[11,"from_path","","Transforms a path to a map back to a MapName. Returns None…",7,[[],[["mapname",3],["option",4]]]],[11,"path","","Returns the filesystem path to this map.",7,[[],["string",3]]],[11,"list_all_maps_in_city","","Returns all maps from one city.",7,[[["cityname",3]],[["mapname",3],["vec",3]]]],[11,"list_all_maps","","Returns all maps from all cities, using system data.",7,[[],[["mapname",3],["vec",3]]]],[11,"to_data_pack_name","","Returns the string to opt into runtime or input files for …",7,[[],["string",3]]],[5,"path_prebaked_results","","",null,[[["mapname",3]],["string",3]]],[5,"path_scenario","","",null,[[["mapname",3]],["string",3]]],[5,"path_all_scenarios","","",null,[[["mapname",3]],["string",3]]],[5,"parse_scenario_path","","Extract the map and scenario name from a path. Crashes if …",null,[[]]],[5,"path_player","","",null,[[["asref",8]],["string",3]]],[5,"path_camera_state","","",null,[[["mapname",3]],["string",3]]],[5,"path_edits","","",null,[[["mapname",3]],["string",3]]],[5,"path_all_edits","","",null,[[["mapname",3]],["string",3]]],[5,"path_save","","",null,[[["string",3],["mapname",3]],["string",3]]],[5,"path_all_saves","","",null,[[["mapname",3]],["string",3]]],[5,"path_popdat","","",null,[[],["string",3]]],[5,"path_raw_map","","",null,[[["mapname",3]],["string",3]]],[5,"path_shared_input","","",null,[[["asref",8]],["string",3]]],[0,"io","abstio","",null,null],[5,"maybe_read_json","abstio::io","",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"read_json","","",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"read_binary","","",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"read_object","","May be a JSON or binary file",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"must_read_object","","May be a JSON or binary file. Panics on failure.",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"find_prev_file","","Keeps file extensions",null,[[["string",3]],[["option",4],["string",3]]]],[5,"find_next_file","","",null,[[["string",3]],[["option",4],["string",3]]]],[5,"load_all_objects","","Load all serialized things from a directory, return …",null,[[["string",3]],["vec",3]]],[5,"list_all_objects","","Just list all things from a directory, return sorted by …",null,[[["string",3]],[["string",3],["vec",3]]]],[5,"maybe_read_json","abstio","",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"read_json","","",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"read_binary","","",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"read_object","","May be a JSON or binary file",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"must_read_object","","May be a JSON or binary file. Panics on failure.",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"find_prev_file","","Keeps file extensions",null,[[["string",3]],[["option",4],["string",3]]]],[5,"find_next_file","","",null,[[["string",3]],[["option",4],["string",3]]]],[5,"load_all_objects","","Load all serialized things from a directory, return …",null,[[["string",3]],["vec",3]]],[5,"list_all_objects","","Just list all things from a directory, return sorted by …",null,[[["string",3]],[["string",3],["vec",3]]]],[5,"file_exists","","",null,[[["asref",8]]]],[5,"list_dir","","Returns full paths",null,[[["string",3]],[["string",3],["vec",3]]]],[5,"slurp_file","","",null,[[["asref",8]],[["vec",3],["result",6]]]],[5,"maybe_read_binary","","",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"write_json","","",null,[[["string",3]]]],[5,"write_binary","","",null,[[["string",3]]]],[5,"delete_file","","Idempotent",null,[[["asref",8]]]],[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],[5,"download_bytes","","Downloads bytes from a URL. If quiet is false, prints …",null,[[["asref",8]]]],[5,"download_to_file","","Downloads a file. If quiet is false, prints progress. …",null,[[["string",3],["asref",8]]]],[3,"Manifest","","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",2,null],[12,"compressed_size_bytes","","Compressed size in bytes",2,null],[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],[5,"path","","",null,[[["asref",8]],["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],[3,"MapName","","A single map is identified using this.",null,null],[12,"city","","",7,null],[12,"map","","The name of the map within the city, in filename-friendly …",7,null],[5,"path_prebaked_results","","",null,[[["mapname",3]],["string",3]]],[5,"path_scenario","","",null,[[["mapname",3]],["string",3]]],[5,"path_all_scenarios","","",null,[[["mapname",3]],["string",3]]],[5,"parse_scenario_path","","Extract the map and scenario name from a path. Crashes if …",null,[[]]],[5,"path_player","","",null,[[["asref",8]],["string",3]]],[5,"path_camera_state","","",null,[[["mapname",3]],["string",3]]],[5,"path_edits","","",null,[[["mapname",3]],["string",3]]],[5,"path_all_edits","","",null,[[["mapname",3]],["string",3]]],[5,"path_save","","",null,[[["string",3],["mapname",3]],["string",3]]],[5,"path_all_saves","","",null,[[["mapname",3]],["string",3]]],[5,"path_popdat","","",null,[[],["string",3]]],[5,"path_raw_map","","",null,[[["mapname",3]],["string",3]]],[5,"path_shared_input","","",null,[[["asref",8]],["string",3]]],[5,"slurp_bytes","","An adapter for widgetry::Settings::read_svg to read SVGs …",null,[[],["vec",3]]],[11,"from","abstio::io_native","",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,"events","","",0,[[],["events",3]]],[11,"keys","","",0,[[],["keys",3]]],[11,"read_line","","",0,[[],[["result",4],["option",4],["error",3]]]],[11,"events_and_raw","","",0,[[],["eventsandraw",3]]],[11,"from","abstio::abst_data","",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,"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,"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","abstio::abst_paths","",4,[[]]],[11,"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,"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,"from","","",6,[[]]],[11,"into","","",6,[[]]],[11,"to_owned","","",6,[[]]],[11,"clone_into","","",6,[[]]],[11,"borrow","","",6,[[]]],[11,"borrow_mut","","",6,[[]]],[11,"try_from","","",6,[[],["result",4]]],[11,"try_into","","",6,[[],["result",4]]],[11,"type_id","","",6,[[],["typeid",3]]],[11,"equivalent","","",6,[[]]],[11,"from","","",7,[[]]],[11,"into","","",7,[[]]],[11,"to_owned","","",7,[[]]],[11,"clone_into","","",7,[[]]],[11,"borrow","","",7,[[]]],[11,"borrow_mut","","",7,[[]]],[11,"try_from","","",7,[[],["result",4]]],[11,"try_into","","",7,[[],["result",4]]],[11,"type_id","","",7,[[],["typeid",3]]],[11,"equivalent","","",7,[[]]],[11,"clone","","",6,[[],["cityname",3]]],[11,"clone","","",7,[[],["mapname",3]]],[11,"cmp","","",6,[[["cityname",3]],["ordering",4]]],[11,"cmp","","",7,[[["mapname",3]],["ordering",4]]],[11,"eq","","",6,[[["cityname",3]]]],[11,"ne","","",6,[[["cityname",3]]]],[11,"eq","","",7,[[["mapname",3]]]],[11,"ne","","",7,[[["mapname",3]]]],[11,"partial_cmp","","",6,[[["cityname",3]],[["option",4],["ordering",4]]]],[11,"lt","","",6,[[["cityname",3]]]],[11,"le","","",6,[[["cityname",3]]]],[11,"gt","","",6,[[["cityname",3]]]],[11,"ge","","",6,[[["cityname",3]]]],[11,"partial_cmp","","",7,[[["mapname",3]],[["option",4],["ordering",4]]]],[11,"lt","","",7,[[["mapname",3]]]],[11,"le","","",7,[[["mapname",3]]]],[11,"gt","","",7,[[["mapname",3]]]],[11,"ge","","",7,[[["mapname",3]]]],[11,"deref","","",4,[[],["string",3]]],[11,"deref","","",5,[[],["string",3]]],[11,"fmt","","",6,[[["formatter",3]],["result",6]]],[11,"fmt","","",7,[[["formatter",3]],["result",6]]],[11,"read","abstio::io_native","",0,[[],[["result",6],["error",3]]]],[11,"serialize","abstio::abst_data","",1,[[],["result",4]]],[11,"serialize","","",2,[[],["result",4]]],[11,"serialize","","",3,[[],["result",4]]],[11,"serialize","abstio::abst_paths","",6,[[],["result",4]]],[11,"serialize","","",7,[[],["result",4]]],[11,"deserialize","abstio::abst_data","",1,[[],["result",4]]],[11,"deserialize","","",2,[[],["result",4]]],[11,"deserialize","","",3,[[],["result",4]]],[11,"deserialize","abstio::abst_paths","",6,[[],["result",4]]],[11,"deserialize","","",7,[[],["result",4]]],[11,"initialize","","",4,[[]]],[11,"initialize","","",5,[[]]]],"p":[[3,"FileWithProgress"],[3,"Manifest"],[3,"Entry"],[3,"DataPacks"],[3,"ROOT_DIR"],[3,"ROOT_PLAYER_DIR"],[3,"CityName"],[3,"MapName"]]},\
+"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]]]],[5,"list_dir","","Returns full paths",null,[[["string",3]],[["string",3],["vec",3]]]],[5,"slurp_file","","",null,[[["asref",8]],[["vec",3],["result",6]]]],[5,"inner_slurp_file","","",null,[[],[["vec",3],["result",6]]]],[5,"maybe_read_binary","","",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"maybe_write_json","","",null,[[],["result",6]]],[5,"write_json","","",null,[[["string",3]]]],[5,"maybe_write_binary","","",null,[[],["result",6]]],[5,"write_binary","","",null,[[["string",3]]]],[5,"delete_file","","Idempotent",null,[[["asref",8]]]],[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,[[],["result",6]]],[0,"download","abstio","",null,null],[5,"download_bytes","abstio::download","Downloads bytes from a URL. If quiet is false, prints …",null,[[["asref",8]]]],[5,"download_to_file","","Downloads a file. If quiet is false, prints progress. …",null,[[["string",3],["asref",8]]]],[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",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,[[]]],[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]],["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,[[],["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,[[],[["vec",3],["cityname",3]]]],[11,"list_all_cities_from_importer_config","","Returns all city names based on importer config.",6,[[],[["vec",3],["cityname",3]]]],[11,"parse","","Parses a CityName from something like \\\"gb/london\\\"; the …",6,[[],[["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]],["string",3]]],[3,"MapName","","A single map is identified using this.",null,null],[12,"city","","",7,null],[12,"map","","The name of the map within the city, in filename-friendly …",7,null],[11,"new","","Create a MapName from a country code, city, and map name.",7,[[],["mapname",3]]],[11,"from_city","","Create a MapName from a city and map within that city.",7,[[["cityname",3]],["mapname",3]]],[11,"seattle","","Convenient constructor for the main city of the game.",7,[[],["mapname",3]]],[11,"describe","","Stringify the map name for debug messages. Don\'t …",7,[[],["string",3]]],[11,"as_filename","","Stringify the map name for filenames.",7,[[],["string",3]]],[11,"from_path","","Transforms a path to a map back to a MapName. Returns None…",7,[[],[["option",4],["mapname",3]]]],[11,"path","","Returns the filesystem path to this map.",7,[[],["string",3]]],[11,"list_all_maps_in_city","","Returns all maps from one city.",7,[[["cityname",3]],[["vec",3],["mapname",3]]]],[11,"list_all_maps","","Returns all maps from all cities, using system data.",7,[[],[["vec",3],["mapname",3]]]],[11,"to_data_pack_name","","Returns the string to opt into runtime or input files for …",7,[[],["string",3]]],[5,"path_prebaked_results","","",null,[[["mapname",3]],["string",3]]],[5,"path_scenario","","",null,[[["mapname",3]],["string",3]]],[5,"path_all_scenarios","","",null,[[["mapname",3]],["string",3]]],[5,"parse_scenario_path","","Extract the map and scenario name from a path. Crashes if …",null,[[]]],[5,"path_player","","",null,[[["asref",8]],["string",3]]],[5,"path_camera_state","","",null,[[["mapname",3]],["string",3]]],[5,"path_edits","","",null,[[["mapname",3]],["string",3]]],[5,"path_all_edits","","",null,[[["mapname",3]],["string",3]]],[5,"path_save","","",null,[[["mapname",3],["string",3]],["string",3]]],[5,"path_all_saves","","",null,[[["mapname",3]],["string",3]]],[5,"path_popdat","","",null,[[],["string",3]]],[5,"path_raw_map","","",null,[[["mapname",3]],["string",3]]],[5,"path_shared_input","","",null,[[["asref",8]],["string",3]]],[0,"io","abstio","",null,null],[5,"maybe_read_json","abstio::io","",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"read_json","","",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"read_binary","","",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"read_object","","May be a JSON or binary file",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"must_read_object","","May be a JSON or binary file. Panics on failure.",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"find_prev_file","","Keeps file extensions",null,[[["string",3]],[["option",4],["string",3]]]],[5,"find_next_file","","",null,[[["string",3]],[["option",4],["string",3]]]],[5,"load_all_objects","","Load all serialized things from a directory, return …",null,[[["string",3]],["vec",3]]],[5,"list_all_objects","","Just list all things from a directory, return sorted by …",null,[[["string",3]],[["string",3],["vec",3]]]],[5,"maybe_read_json","abstio","",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"read_json","","",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"read_binary","","",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"read_object","","May be a JSON or binary file",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"must_read_object","","May be a JSON or binary file. Panics on failure.",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"find_prev_file","","Keeps file extensions",null,[[["string",3]],[["option",4],["string",3]]]],[5,"find_next_file","","",null,[[["string",3]],[["option",4],["string",3]]]],[5,"load_all_objects","","Load all serialized things from a directory, return …",null,[[["string",3]],["vec",3]]],[5,"list_all_objects","","Just list all things from a directory, return sorted by …",null,[[["string",3]],[["string",3],["vec",3]]]],[5,"file_exists","","",null,[[["asref",8]]]],[5,"list_dir","","Returns full paths",null,[[["string",3]],[["string",3],["vec",3]]]],[5,"slurp_file","","",null,[[["asref",8]],[["vec",3],["result",6]]]],[5,"maybe_read_binary","","",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"write_json","","",null,[[["string",3]]]],[5,"write_binary","","",null,[[["string",3]]]],[5,"delete_file","","Idempotent",null,[[["asref",8]]]],[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],[5,"download_bytes","","Downloads bytes from a URL. If quiet is false, prints …",null,[[["asref",8]]]],[5,"download_to_file","","Downloads a file. If quiet is false, prints progress. …",null,[[["string",3],["asref",8]]]],[3,"Manifest","","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",2,null],[12,"compressed_size_bytes","","Compressed size in bytes",2,null],[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],[5,"path","","",null,[[["asref",8]],["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],[3,"MapName","","A single map is identified using this.",null,null],[12,"city","","",7,null],[12,"map","","The name of the map within the city, in filename-friendly …",7,null],[5,"path_prebaked_results","","",null,[[["mapname",3]],["string",3]]],[5,"path_scenario","","",null,[[["mapname",3]],["string",3]]],[5,"path_all_scenarios","","",null,[[["mapname",3]],["string",3]]],[5,"parse_scenario_path","","Extract the map and scenario name from a path. Crashes if …",null,[[]]],[5,"path_player","","",null,[[["asref",8]],["string",3]]],[5,"path_camera_state","","",null,[[["mapname",3]],["string",3]]],[5,"path_edits","","",null,[[["mapname",3]],["string",3]]],[5,"path_all_edits","","",null,[[["mapname",3]],["string",3]]],[5,"path_save","","",null,[[["mapname",3],["string",3]],["string",3]]],[5,"path_all_saves","","",null,[[["mapname",3]],["string",3]]],[5,"path_popdat","","",null,[[],["string",3]]],[5,"path_raw_map","","",null,[[["mapname",3]],["string",3]]],[5,"path_shared_input","","",null,[[["asref",8]],["string",3]]],[5,"slurp_bytes","","An adapter for widgetry::Settings::read_svg to read SVGs …",null,[[],["vec",3]]],[11,"from","abstio::io_native","",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,"events","","",0,[[],["events",3]]],[11,"keys","","",0,[[],["keys",3]]],[11,"read_line","","",0,[[],[["result",4],["option",4],["error",3]]]],[11,"events_and_raw","","",0,[[],["eventsandraw",3]]],[11,"from","abstio::abst_data","",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,"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,"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","abstio::abst_paths","",4,[[]]],[11,"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,"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,"from","","",6,[[]]],[11,"into","","",6,[[]]],[11,"to_owned","","",6,[[]]],[11,"clone_into","","",6,[[]]],[11,"borrow","","",6,[[]]],[11,"borrow_mut","","",6,[[]]],[11,"try_from","","",6,[[],["result",4]]],[11,"try_into","","",6,[[],["result",4]]],[11,"type_id","","",6,[[],["typeid",3]]],[11,"equivalent","","",6,[[]]],[11,"from","","",7,[[]]],[11,"into","","",7,[[]]],[11,"to_owned","","",7,[[]]],[11,"clone_into","","",7,[[]]],[11,"borrow","","",7,[[]]],[11,"borrow_mut","","",7,[[]]],[11,"try_from","","",7,[[],["result",4]]],[11,"try_into","","",7,[[],["result",4]]],[11,"type_id","","",7,[[],["typeid",3]]],[11,"equivalent","","",7,[[]]],[11,"clone","","",6,[[],["cityname",3]]],[11,"clone","","",7,[[],["mapname",3]]],[11,"cmp","","",6,[[["cityname",3]],["ordering",4]]],[11,"cmp","","",7,[[["mapname",3]],["ordering",4]]],[11,"eq","","",6,[[["cityname",3]]]],[11,"ne","","",6,[[["cityname",3]]]],[11,"eq","","",7,[[["mapname",3]]]],[11,"ne","","",7,[[["mapname",3]]]],[11,"partial_cmp","","",6,[[["cityname",3]],[["option",4],["ordering",4]]]],[11,"lt","","",6,[[["cityname",3]]]],[11,"le","","",6,[[["cityname",3]]]],[11,"gt","","",6,[[["cityname",3]]]],[11,"ge","","",6,[[["cityname",3]]]],[11,"partial_cmp","","",7,[[["mapname",3]],[["option",4],["ordering",4]]]],[11,"lt","","",7,[[["mapname",3]]]],[11,"le","","",7,[[["mapname",3]]]],[11,"gt","","",7,[[["mapname",3]]]],[11,"ge","","",7,[[["mapname",3]]]],[11,"deref","","",4,[[],["string",3]]],[11,"deref","","",5,[[],["string",3]]],[11,"fmt","","",6,[[["formatter",3]],["result",6]]],[11,"fmt","","",7,[[["formatter",3]],["result",6]]],[11,"read","abstio::io_native","",0,[[],[["result",6],["error",3]]]],[11,"serialize","abstio::abst_data","",1,[[],["result",4]]],[11,"serialize","","",2,[[],["result",4]]],[11,"serialize","","",3,[[],["result",4]]],[11,"serialize","abstio::abst_paths","",6,[[],["result",4]]],[11,"serialize","","",7,[[],["result",4]]],[11,"deserialize","abstio::abst_data","",1,[[],["result",4]]],[11,"deserialize","","",2,[[],["result",4]]],[11,"deserialize","","",3,[[],["result",4]]],[11,"deserialize","abstio::abst_paths","",6,[[],["result",4]]],[11,"deserialize","","",7,[[],["result",4]]],[11,"initialize","","",4,[[]]],[11,"initialize","","",5,[[]]]],"p":[[3,"FileWithProgress"],[3,"Manifest"],[3,"Entry"],[3,"DataPacks"],[3,"ROOT_DIR"],[3,"ROOT_PLAYER_DIR"],[3,"CityName"],[3,"MapName"]]},\
"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,[[],["string",3]]],[11,"optional","","",0,[[],[["string",3],["option",4]]]],[11,"optional_parse","","",0,[[["fn",8]],["option",4]]],[11,"true_false","","",0,[[]]],[11,"enabled","","",0,[[]]],[11,"required_free","","",0,[[],["string",3]]],[11,"optional_free","","",0,[[],[["string",3],["option",4]]]],[11,"done","","",0,[[]]],[5,"parse_args","","",null,[[],[["vec",3],["result",6]]]],[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,[[]]],[11,"borrow","","",1,[[],["btreemap",3]]],[11,"consume","","",1,[[],[["btreemap",3],["btreeset",3]]]],[3,"Counter","","",null,null],[12,"map","","",2,null],[12,"sum","","",2,null],[11,"new","","",2,[[],["counter",3]]],[11,"add","","",2,[[]]],[11,"inc","","",2,[[]]],[11,"get","","",2,[[]]],[11,"sorted_asc","","Values with the same count are grouped together",2,[[],[["vec",3],["vec",3]]]],[11,"highest_n","","",2,[[],["vec",3]]],[11,"max","","",2,[[]]],[11,"sum","","",2,[[]]],[11,"compare","","",2,[[["counter",3]],["vec",3]]],[11,"borrow","","",2,[[],["btreemap",3]]],[11,"consume","","",2,[[],["btreemap",3]]],[5,"wraparound_get","","",null,[[["vec",3]]]],[5,"retain_btreemap","","",null,[[["fnmut",8],["btreemap",3]]]],[5,"retain_btreeset","","",null,[[["btreeset",3],["fnmut",8]]]],[5,"contains_duplicates","","",null,[[["vec",3]]]],[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,[[["btreemap",3],["string",3]],["tags",3]]],[11,"empty","","",4,[[],["tags",3]]],[11,"get","","",4,[[],[["string",3],["option",4]]]],[11,"contains_key","","",4,[[]]],[11,"is","","",4,[[]]],[11,"is_any","","",4,[[["vec",3]]]],[11,"insert","","",4,[[["string",3],["into",8]]]],[11,"remove","","",4,[[],[["string",3],["option",4]]]],[11,"is_empty","","",4,[[]]],[11,"inner","","",4,[[],["btreemap",3]]],[8,"IndexableKey","","Use with FixedMap. From a particular key, extract a usize…",null,null],[10,"index","","",5,[[]]],[3,"FixedMap","","A drop-in replacement for BTreeMap, 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,[[]]],[11,"remove","","",6,[[],["option",4]]],[11,"values","","",6,[[],[["iter",3],["flatten",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","Stringifies an object to nicely formatted JSON.",null,[[],["string",3]]],[5,"to_json_terse","","Stringifies an object to terse JSON.",null,[[],["string",3]]],[5,"from_json","","Deserializes an object from a JSON string.",null,[[["vec",3]],[["deserializeowned",8],["result",6]]]],[5,"from_json_reader","","Deserializes an object from JSON, from a reader.",null,[[["read",8]],[["deserializeowned",8],["result",6]]]],[5,"from_binary","","Deserializes an object from the bincode format.",null,[[["vec",3]],[["deserializeowned",8],["result",6]]]],[5,"from_binary_reader","","Deserializes an object from the bincode format, from a …",null,[[["read",8]],[["deserializeowned",8],["result",6]]]],[5,"serialized_size_bytes","","The number of bytes for an object serialized to bincode.",null,[[]]],[5,"serialize_btreemap","","Serializes a BTreeMap as a list of tuples. Necessary when …",null,[[["btreemap",3],["serializer",8]],["result",6]]],[5,"deserialize_btreemap","","Deserializes a BTreeMap from a list of tuples. Necessary …",null,[[["deserializer",8]],[["result",6],["btreemap",3]]]],[5,"serialize_hashmap","","Serializes a HashMap as a list of tuples, first sorting …",null,[[["hashmap",3],["serializer",8]],["result",6]]],[5,"deserialize_hashmap","","Deserializes a HashMap from a list of tuples.",null,[[["deserializer",8]],[["result",6],["hashmap",3]]]],[5,"serialize_multimap","","Serializes a MultiMap.",null,[[["serializer",8],["multimap",3]],["result",6]]],[5,"deserialize_multimap","","Deserializes a MultiMap.",null,[[["deserializer",8]],[["multimap",3],["result",6]]]],[5,"serialize_usize","","Serializes a usize as a u32 to save space. Useful when …",null,[[["serializer",8]],["result",6]]],[5,"deserialize_usize","","Deserializes a usize from a u32.",null,[[["deserializer",8]],["result",6]]],[0,"time","abstutil","",null,null],[5,"elapsed_seconds","abstutil::time","",null,[[["instant",6]]]],[3,"Progress","","",null,null],[12,"label","","",7,null],[12,"processed_items","","",7,null],[12,"total_items","","",7,null],[12,"started_at","","",7,null],[12,"last_printed_at","","",7,null],[12,"first_update","","",7,null],[11,"new","","",7,[[["string",3]],["progress",3]]],[11,"next","","",7,[[["option",4]],["option",4]]],[11,"cancel_iter_early","","",7,[[]]],[4,"StackEntry","","",null,null],[13,"TimerSpan","","",8,null],[13,"Progress","","",8,null],[13,"File","","",8,null],[8,"TimerSink","","",null,null],[10,"println","","",9,[[["string",3]]]],[10,"reprintln","","",9,[[["string",3]]]],[3,"Timer","","Hierarchial magic",null,null],[12,"results","","",10,null],[12,"stack","","",10,null],[12,"outermost_name","","",10,null],[12,"sink","","",10,null],[3,"TimerSpan","","",null,null],[12,"name","","",11,null],[12,"started_at","","",11,null],[12,"nested_results","","",11,null],[12,"nested_time","","",11,null],[4,"Parallelism","","",null,null],[13,"Fastest","","Use all CPUs",12,null],[13,"Polite","","Use half of CPUs",12,null],[11,"new","","",10,[[["string",3],["into",8]],["timer",3]]],[11,"new_with_sink","","",10,[[["box",3],["timersink",8]],["timer",3]]],[11,"throwaway","","",10,[[],["timer",3]]],[11,"println","","",10,[[["string",3]]]],[11,"selfless_println","","",10,[[["string",3],["option",4]]]],[11,"done","","Used to end the scope of a timer early.",10,[[]]],[11,"start","","",10,[[["string",3],["into",8]]]],[11,"stop","","",10,[[["string",3],["into",8]]]],[11,"start_iter","","",10,[[["string",3],["into",8]]]],[11,"next","","",10,[[]]],[11,"cancel_iter_early","","",10,[[]]],[11,"add_result","","",10,[[["string",3]]]],[11,"parallelize","","The order of the result is deterministic / matches the …",10,[[["parallelism",4],["vec",3],["fn",8]],["vec",3]]],[11,"read_file","","Then the caller passes this in as a reader",10,[[],["result",6]]],[5,"prettyprint_time","","",null,[[],["string",3]]],[5,"clear_current_line","","",null,[[]]],[3,"TimedFileReader","","",null,null],[12,"inner","","",13,null],[12,"path","","",13,null],[12,"processed_bytes","","",13,null],[12,"total_bytes","","",13,null],[12,"started_at","","",13,null],[12,"last_printed_at","","",13,null],[11,"new","","",13,[[],[["timedfilereader",3],["result",6]]]],[0,"utils","abstutil","",null,null],[5,"plain_list_names","abstutil::utils","",null,[[["btreeset",3],["string",3]],["string",3]]],[5,"prettyprint_usize","","",null,[[],["string",3]]],[5,"basename","","",null,[[["asref",8]],["string",3]]],[5,"parent_path","","",null,[[],["string",3]]],[5,"to_json","abstutil","Stringifies an object to nicely formatted JSON.",null,[[],["string",3]]],[5,"to_json_terse","","Stringifies an object to terse JSON.",null,[[],["string",3]]],[5,"from_json","","Deserializes an object from a JSON string.",null,[[["vec",3]],[["deserializeowned",8],["result",6]]]],[5,"from_json_reader","","Deserializes an object from JSON, from a reader.",null,[[["read",8]],[["deserializeowned",8],["result",6]]]],[5,"from_binary","","Deserializes an object from the bincode format.",null,[[["vec",3]],[["deserializeowned",8],["result",6]]]],[5,"from_binary_reader","","Deserializes an object from the bincode format, from a …",null,[[["read",8]],[["deserializeowned",8],["result",6]]]],[5,"serialized_size_bytes","","The number of bytes for an object serialized to bincode.",null,[[]]],[5,"serialize_btreemap","","Serializes a BTreeMap as a list of tuples. Necessary when …",null,[[["btreemap",3],["serializer",8]],["result",6]]],[5,"deserialize_btreemap","","Deserializes a BTreeMap from a list of tuples. Necessary …",null,[[["deserializer",8]],[["result",6],["btreemap",3]]]],[5,"serialize_hashmap","","Serializes a HashMap as a list of tuples, first sorting …",null,[[["hashmap",3],["serializer",8]],["result",6]]],[5,"deserialize_hashmap","","Deserializes a HashMap from a list of tuples.",null,[[["deserializer",8]],[["result",6],["hashmap",3]]]],[5,"serialize_multimap","","Serializes a MultiMap.",null,[[["serializer",8],["multimap",3]],["result",6]]],[5,"deserialize_multimap","","Deserializes a MultiMap.",null,[[["deserializer",8]],[["multimap",3],["result",6]]]],[5,"serialize_usize","","Serializes a usize as a u32 to save space. Useful when …",null,[[["serializer",8]],["result",6]]],[5,"deserialize_usize","","Deserializes a usize from a u32.",null,[[["deserializer",8]],["result",6]]],[3,"CmdArgs","","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],[3,"MultiMap","","",null,null],[12,"map","","",1,null],[12,"empty","","",1,null],[3,"Counter","","",null,null],[12,"map","","",2,null],[12,"sum","","",2,null],[5,"wraparound_get","","",null,[[["vec",3]]]],[5,"retain_btreemap","","",null,[[["fnmut",8],["btreemap",3]]]],[5,"retain_btreeset","","",null,[[["btreeset",3],["fnmut",8]]]],[5,"contains_duplicates","","",null,[[["vec",3]]]],[3,"VecMap","","Use when your key is just PartialEq, not Ord or Hash.",null,null],[12,"inner","","",3,null],[3,"Tags","","Convenience functions around a string->string map",null,null],[12,"0","","",4,null],[8,"IndexableKey","","Use with FixedMap. From a particular key, extract a usize…",null,null],[10,"index","","",5,[[]]],[3,"FixedMap","","A drop-in replacement for BTreeMap, where the keys have …",null,null],[12,"inner","","",6,null],[12,"key_type","","",6,null],[5,"setup","","On native: uses env_logYou can adjust the log level …",null,[[]]],[5,"must_run_cmd","","Runs a command, asserts success. STDOUT and STDERR aren\'t …",null,[[["command",3]]]],[5,"plain_list_names","","",null,[[["btreeset",3],["string",3]],["string",3]]],[5,"prettyprint_usize","","",null,[[],["string",3]]],[5,"basename","","",null,[[["asref",8]],["string",3]]],[5,"parent_path","","",null,[[],["string",3]]],[17,"PROGRESS_FREQUENCY_SECONDS","","",null,null],[11,"from","abstutil::cli","",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","abstutil::collections","",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,"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","","",6,[[]]],[11,"into","","",6,[[]]],[11,"to_owned","","",6,[[]]],[11,"clone_into","","",6,[[]]],[11,"borrow","","",6,[[]]],[11,"borrow_mut","","",6,[[]]],[11,"try_from","","",6,[[],["result",4]]],[11,"try_into","","",6,[[],["result",4]]],[11,"type_id","","",6,[[],["typeid",3]]],[11,"from","abstutil::time","",7,[[]]],[11,"into","","",7,[[]]],[11,"borrow","","",7,[[]]],[11,"borrow_mut","","",7,[[]]],[11,"try_from","","",7,[[],["result",4]]],[11,"try_into","","",7,[[],["result",4]]],[11,"type_id","","",7,[[],["typeid",3]]],[11,"from","","",8,[[]]],[11,"into","","",8,[[]]],[11,"borrow","","",8,[[]]],[11,"borrow_mut","","",8,[[]]],[11,"try_from","","",8,[[],["result",4]]],[11,"try_into","","",8,[[],["result",4]]],[11,"type_id","","",8,[[],["typeid",3]]],[11,"from","","",10,[[]]],[11,"into","","",10,[[]]],[11,"borrow","","",10,[[]]],[11,"borrow_mut","","",10,[[]]],[11,"try_from","","",10,[[],["result",4]]],[11,"try_into","","",10,[[],["result",4]]],[11,"type_id","","",10,[[],["typeid",3]]],[11,"events","","",10,[[],["events",3]]],[11,"keys","","",10,[[],["keys",3]]],[11,"read_line","","",10,[[],[["result",4],["option",4],["error",3]]]],[11,"events_and_raw","","",10,[[],["eventsandraw",3]]],[11,"from","","",11,[[]]],[11,"into","","",11,[[]]],[11,"borrow","","",11,[[]]],[11,"borrow_mut","","",11,[[]]],[11,"try_from","","",11,[[],["result",4]]],[11,"try_into","","",11,[[],["result",4]]],[11,"type_id","","",11,[[],["typeid",3]]],[11,"from","","",12,[[]]],[11,"into","","",12,[[]]],[11,"borrow","","",12,[[]]],[11,"borrow_mut","","",12,[[]]],[11,"try_from","","",12,[[],["result",4]]],[11,"try_into","","",12,[[],["result",4]]],[11,"type_id","","",12,[[],["typeid",3]]],[11,"from","","",13,[[]]],[11,"into","","",13,[[]]],[11,"borrow","","",13,[[]]],[11,"borrow_mut","","",13,[[]]],[11,"try_from","","",13,[[],["result",4]]],[11,"try_into","","",13,[[],["result",4]]],[11,"type_id","","",13,[[],["typeid",3]]],[11,"drop","","",10,[[]]],[11,"clone","abstutil::collections","",1,[[],["multimap",3]]],[11,"clone","","",2,[[],["counter",3]]],[11,"clone","","",4,[[],["tags",3]]],[11,"clone","","",6,[[],["fixedmap",3]]],[11,"default","","",1,[[],["multimap",3]]],[11,"default","","",2,[[],["counter",3]]],[11,"eq","","",1,[[["multimap",3]]]],[11,"ne","","",1,[[["multimap",3]]]],[11,"eq","","",4,[[["tags",3]]]],[11,"ne","","",4,[[["tags",3]]]],[11,"fmt","","",4,[[["formatter",3]],["result",6]]],[11,"fmt","abstutil::time","",7,[[["formatter",3]],["result",6]]],[11,"index","abstutil::collections","",6,[[]]],[11,"read","abstutil::time","",10,[[],[["result",6],["error",3]]]],[11,"serialize","abstutil::collections","",4,[[],["result",4]]],[11,"serialize","","",6,[[],["result",4]]],[11,"deserialize","","",4,[[],["result",4]]],[11,"deserialize","","",6,[[],["result",4]]]],"p":[[3,"CmdArgs"],[3,"MultiMap"],[3,"Counter"],[3,"VecMap"],[3,"Tags"],[8,"IndexableKey"],[3,"FixedMap"],[3,"Progress"],[4,"StackEntry"],[8,"TimerSink"],[3,"Timer"],[3,"TimerSpan"],[4,"Parallelism"],[3,"TimedFileReader"]]},\
"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,[[["map",3],["timer",3],["scenario",3],["xorshiftrng",3]]]],[5,"pick_lunch_spot","","",null,[[["map",3],["findclosest",3],["buildingid",3],["xorshiftrng",3]],["option",4]]]],"p":[]},\
"clip_osm":{"doc":"","i":[[5,"main","clip_osm","Clips an .osm.pbf specified by --pbf using the Osmosis …",null,[[],["result",6]]],[5,"clip","","",null,[[["polygon",3]],["result",6]]],[5,"to_pt","","",null,[[],["point",3]]]],"p":[]},\
diff --git a/rustdoc/src/abstio/download.rs.html b/rustdoc/src/abstio/download.rs.html
index 97e40bc879..190c341b6c 100644
--- a/rustdoc/src/abstio/download.rs.html
+++ b/rustdoc/src/abstio/download.rs.html
@@ -48,6 +48,7 @@
454647
+48
usestd::io::{stdout, Write};
@@ -59,6 +60,7 @@
/// tokio runtime somewhere.pubasyncfndownload_bytes<I: AsRef<str>>(url: I, quiet: bool) ->Result<Vec<u8>> {
leturl=url.as_ref();
+ info!("Downloading {}", url);
letmutresp=reqwest::get(url).await.unwrap();
resp.error_for_status_ref()
.with_context(||format!("downloading {}", url))?;
diff --git a/rustdoc/src/game/home/runner/work/abstreet/abstreet/target/debug/build/game-a95c4551e63dceca/out/built.rs.html b/rustdoc/src/game/home/runner/work/abstreet/abstreet/target/debug/build/game-a95c4551e63dceca/out/built.rs.html
index 64fe2b00a7..175e3339a4 100644
--- a/rustdoc/src/game/home/runner/work/abstreet/abstreet/target/debug/build/game-a95c4551e63dceca/out/built.rs.html
+++ b/rustdoc/src/game/home/runner/work/abstreet/abstreet/target/debug/build/game-a95c4551e63dceca/out/built.rs.html
@@ -122,7 +122,7 @@
/// The output of `rustdoc -V`pubconstRUSTDOC_VERSION: &str="rustdoc 1.50.0 (cb75ad5db 2021-02-10)";
/// The built-time in RFC2822, UTC
-pubconstBUILT_TIME_UTC: &str="Tue, 16 Mar 2021 19:53:10 +0000";
+pubconstBUILT_TIME_UTC: &str="Wed, 17 Mar 2021 01:17:41 +0000";
/// The target architecture, given by `cfg!(target_arch)`.pubconstCFG_TARGET_ARCH: &str="x86_64";
/// The endianness, given by `cfg!(target_endian)`.
diff --git a/rustdoc/src/map_gui/tools/command.rs.html b/rustdoc/src/map_gui/tools/command.rs.html
index 70ebf434c1..2609e6bfbb 100644
--- a/rustdoc/src/map_gui/tools/command.rs.html
+++ b/rustdoc/src/map_gui/tools/command.rs.html
@@ -255,7 +255,7 @@
}
// Handle the "clear the current line" escape codeifline.contains("\r") {
- self.lines.pop_front();
+ self.lines.pop_back();
self.lines
.push_back(line.split('\r').last().unwrap().to_string());
} else {