Add parser tests and fix some bugs
[?]
Jan 14, 2021, 10:04 PM
M5HGUS2TL72TRSUS7NN7ZQND4CDPVBERJQNUQJ4XTZ6GRUEPUIEACDependencies
- [2]
7DH43OFGAdd gemtext helpers for headers and responses - [3]
XHDJKZOSFix test - [4]
LSYI2TXCHousekeeping, add RequestType - [5]
Y55SCAUNFinish gemtext parsing implementation - [6]
JBZGFYVOAdd nom parsers for main types - [7]
55JQX7NFAdd sputnik - [8]
KP6SZZ34Fix building without parsers - [9]
K37J3USBAdd WIP gemtext parsers - [10]
5II6T7YEAdd gemini library - [*]
BOFUYB6IAdd documentation and implement some feedback from Discord (https://discord.com/channels/273534239310479360/354038657075904544/796256815024701480) - [*]
J4PKMKJXAdd root doc comment, gemtext module
Change contents
- edit in gemini/src/status.rs at line 248
#[cfg(test)]mod test {use super::*;#[test]fn test_good_statuses() {let statuses = vec![b"10", b"11", b"20", b"30", b"31", b"40", b"41", b"42", b"43", b"44", b"50", b"51",b"52", b"53", b"59", b"60", b"61", b"62",];for code in statuses {assert!(status(code).is_ok())}}#[test]fn test_bad_statuses() {let base_code = b"70";for i in 0..40 {let mut code = base_code.clone();code[1] += i;assert!(status(&code).is_err())}}} - edit in gemini/src/response.rs at line 118
#[cfg(test)]mod test {use super::*;#[test]fn test_response() {let bytes = b"20 text/gemini\r\n=> gemini://foo.bar.baz/ wow";let res = response(bytes).unwrap().1;assert_eq!(res.body_text().unwrap(), "=> gemini://foo.bar.baz/ wow")}#[test]fn test_response_no_body() {let bytes = b"60 owwwwwwww!\r\ni shouldn't be here";assert!(response(bytes).is_err());let bytes = b"61 this is fine\r\n";assert!(response(bytes).is_ok());}} - edit in gemini/src/request.rs at line 166
#[cfg(test)]mod test {use super::*;#[test]fn test_gemini_request() {let bytes = b"gemini://foo.bar.baz:1966/path\r\n";assert!(request(bytes).unwrap().1.is_gemini_request())}#[test]fn test_gemini_request_no_port() {let bytes = b"gemini://foo.bar.baz/path\r\n";assert!(request(bytes).unwrap().1.is_gemini_request())}#[test]fn test_generic_request() {let bytes = b"http://goggle.com/snoop\r\n";assert!(request(bytes).is_ok())}// NB: looking at this test, im unsure if this behavior is desirable.// maybe there should be a canonical parser that strictly requires// a scheme, since that's what the gemini spec does, along with a uri// parser that tries to read a "link-like-thing" as a gemini link?#[test]fn test_no_scheme() {let bytes = b"foo.bar.baz/path\r\n";assert!(request(bytes).unwrap().1.is_gemini_request())}} - replacement in gemini/src/header.rs at line 100
pub fn success(mime_type: String) -> Option<Self> {Self::new(Status::SUCCESS, mime_type)pub fn success(mime_type: impl Into<String>) -> Option<Self> {Self::new(Status::SUCCESS, mime_type.into()) - edit in gemini/src/header.rs at line 141
#[cfg(test)]mod test {use super::*;#[test]fn test_success() {let bytes = b"20 text/gemini; charset=utf-8\r\n";assert_eq!(header(bytes).unwrap().1, Header::gemtext())}#[test]fn test_mimetype() {let bytes = b"20 text/json\r\n";assert_eq!(header(bytes).unwrap().1,Header::success("text/json").unwrap())}#[test]fn test_error() {let bytes = b"59 grr! bark! meow!\r\n";assert_eq!(header(bytes).unwrap().1,Header::new(Status::BAD_REQUEST, "grr! bark! meow!".into()).unwrap())}} - replacement in gemini/src/gemtext.rs at line 204
character::complete::{line_ending, not_line_ending, space1},character::complete::{line_ending, not_line_ending, space0, space1}, - replacement in gemini/src/gemtext.rs at line 208
sequence::{pair, preceded, terminated},sequence::{pair, preceded, terminated, tuple}, - edit in gemini/src/gemtext.rs at line 232
let body = pair(is_not(" \t\r\n"), opt(preceded(space1, is_not(" \t\r\n")))); - replacement in gemini/src/gemtext.rs at line 235
preceded(pair(tag("=>"), space1), terminated(body, line_ending)),preceded(pair(tag("=>"), space1),terminated(pair(is_not(" \t\r\n"), opt(preceded(space1, not_line_ending))),line_ending,),), - replacement in gemini/src/gemtext.rs at line 262
terminated(pair(level, not_line_ending), line_ending),terminated(pair(terminated(level, space0), not_line_ending),line_ending,), - replacement in gemini/src/gemtext.rs at line 275
terminated(preceded(tag("*"), not_line_ending), line_ending),terminated(preceded(tag("* "), not_line_ending), line_ending), - replacement in gemini/src/gemtext.rs at line 285
terminated(preceded(tag(">"), not_line_ending), line_ending),terminated(preceded(terminated(tag(">"), space0), not_line_ending),line_ending,), - replacement in gemini/src/gemtext.rs at line 303
pair(line_ending, tag("```")),tuple((line_ending, tag("```"), not_line_ending, line_ending)), - replacement in gemini/src/gemtext.rs at line 318
many1(alt((text, link, heading, list_item, quote, preformatted))),many1(alt((link, heading, list_item, quote, preformatted, text))), - edit in gemini/src/gemtext.rs at line 322
}#[cfg(test)]mod test {use super::*;#[test]fn test_document() {assert_eq!(document(DOCUMENT).unwrap().1,Builder::from_docs(vec![Doc::Blank,Doc::Preformatted {alt: Some("logo".to_string()),text: " wooo\n/^^^^\\\n| |\n\\____/".to_string()},Doc::Blank,Doc::Heading(Level::One, "GAZE INTO THE SPHERE!".to_string()),Doc::Blank,Doc::Text("critics are raving".to_string()),Doc::Quote("i love the sphere - bort".to_string()),Doc::Quote("the sphere gives me purpose - frelvin".to_string()),Doc::Blank,Doc::ListItem("always".to_string()),Doc::ListItem("trust".to_string()),Doc::ListItem("the sphere".to_string()),Doc::Link {to: "gemini://sphere.gaze".to_string(),name: Some("gaze more here".to_string())}]))} - replacement in gemini/src/gemtext.rs at line 362
pub fn test_builder() {fn test_builder() { - replacement in gemini/src/gemtext.rs at line 375
assert_eq!(doc.build(),r#"assert_eq!(doc.build(), DOCUMENT)}}#[cfg(test)]const DOCUMENT: &'static str = r#" - replacement in gemini/src/gemtext.rs at line 398
"#)}}[5.979]"#; - replacement in Cargo.toml at line 6
"./voskhod",# "./voskhod", - edit in Cargo.lock at line 3[5.10350]→[5.10350:10362](∅→∅),[5.10586]→[5.10586:10602](∅→∅),[5.10602]→[4.3686:3705](∅→∅),[4.3705]→[5.10621:10686](∅→∅),[5.10621]→[5.10621:10686](∅→∅),[5.10686]→[4.3706:3784](∅→∅),[4.3784]→[5.4408:4409](∅→∅),[5.10764]→[5.4408:4409](∅→∅)
[[package]]name = "anyhow"version = "1.0.38"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "afddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1" - edit in Cargo.lock at line 8[5.4600]→[5.10764:10777](∅→∅),[5.10764]→[5.10764:10777](∅→∅),[5.10777]→[4.3785:3820](∅→∅),[4.3820]→[5.10810:10875](∅→∅),[5.10810]→[5.10810:10875](∅→∅),[5.10875]→[4.3821:3899](∅→∅)
[[package]]name = "autocfg"version = "1.0.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" - edit in Cargo.lock at line 28[5.4848]→[4.3900:4089](∅→∅),[5.4848]→[5.11626:11813](∅→∅),[4.4089]→[5.11626:11813](∅→∅),[5.11626]→[5.11626:11813](∅→∅)
name = "bytes"version = "1.0.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040"[[package]]name = "cc"version = "1.0.66"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48"[[package]] - edit in Cargo.lock at line 32[4.4204]→[5.12016:12045](∅→∅),[5.12016]→[5.12016:12045](∅→∅),[5.12045]→[4.4205:4223](∅→∅),[4.4223]→[5.12064:12129](∅→∅),[5.12064]→[5.12064:12129](∅→∅),[5.12129]→[4.4224:4302](∅→∅),[4.4302]→[5.12207:12220](∅→∅),[5.12207]→[5.12207:12220](∅→∅),[5.12220]→[4.4303:4346](∅→∅),[4.4346]→[5.12258:12323](∅→∅),[5.12258]→[5.12258:12323](∅→∅),[5.12323]→[4.4347:4425](∅→∅),[4.4425]→[5.12401:12418](∅→∅),[5.12401]→[5.12401:12418](∅→∅),[5.12418]→[4.4426:4450](∅→∅),[4.4450]→[5.12427:12436](∅→∅),[5.12427]→[5.12427:12436](∅→∅),[5.12451]→[5.12451:12466](∅→∅),[5.12466]→[4.4451:4498](∅→∅),[4.4498]→[5.12499:12564](∅→∅),[5.12499]→[5.12499:12564](∅→∅),[5.12564]→[4.4499:4577](∅→∅)
[[package]]name = "cfg-if"version = "1.0.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"[[package]]name = "core-foundation"version = "0.9.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62"dependencies = ["core-foundation-sys","libc",][[package]]name = "core-foundation-sys"version = "0.8.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" - edit in Cargo.lock at line 34[5.12764]→[4.4578:4619](∅→∅),[4.4619]→[5.12802:12867](∅→∅),[5.12802]→[5.12802:12867](∅→∅),[5.12867]→[4.4620:4698](∅→∅),[4.4698]→[5.12945:12962](∅→∅),[5.12945]→[5.12945:12962](∅→∅),[5.12962]→[4.4699:4724](∅→∅),[4.4724]→[5.13017:13019](∅→∅),[5.13017]→[5.13017:13019](∅→∅),[5.13019]→[4.4725:4929](∅→∅),[4.4929]→[5.13019:13032](∅→∅),[5.13019]→[5.13019:13032](∅→∅)
name = "foreign-types"version = "0.3.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"dependencies = ["foreign-types-shared",][[package]]name = "foreign-types-shared"version = "0.1.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"[[package]] - edit in Cargo.lock at line 60[5.13357]→[4.4954:4991](∅→∅),[4.4991]→[5.13389:13454](∅→∅),[5.13389]→[5.13389:13454](∅→∅),[5.13454]→[4.4992:5124](∅→∅),[4.5124]→[5.13532:13753](∅→∅),[5.13532]→[5.13532:13753](∅→∅),[5.13981]→[5.13981:13996](∅→∅)
name = "getrandom"version = "0.2.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4060f4657be78b8e766215b02b18a2e862d83745545de804638e2b545e81aee6"dependencies = ["cfg-if 1.0.0","libc","wasi",][[package]]name = "hermit-abi"version = "0.1.17"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8"dependencies = ["libc",][[package]] - edit in Cargo.lock at line 71[5.14258]→[4.5125:5160](∅→∅),[4.5160]→[5.14297:14362](∅→∅),[5.14297]→[5.14297:14362](∅→∅),[5.14362]→[4.5161:5275](∅→∅),[4.5275]→[5.14440:14453](∅→∅),[5.14440]→[5.14440:14453](∅→∅),[5.14453]→[4.5276:5315](∅→∅),[4.5315]→[5.14489:14554](∅→∅),[5.14489]→[5.14489:14554](∅→∅),[5.14554]→[4.5316:5394](∅→∅),[4.5394]→[5.5079:5092](∅→∅),[5.14632]→[5.5079:5092](∅→∅)
name = "instant"version = "0.1.9"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec"dependencies = ["cfg-if 1.0.0",][[package]]name = "lazy_static"version = "1.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"[[package]] - replacement in Cargo.lock at line 78
"cfg-if 0.1.10","cfg-if", - edit in Cargo.lock at line 81[5.5359]→[5.5359:5361](∅→∅),[5.5361]→[5.14632:14834](∅→∅),[5.14632]→[5.14632:14834](∅→∅),[5.14834]→[4.5414:5450](∅→∅),[4.5450]→[5.14872:14937](∅→∅),[5.14872]→[5.14872:14937](∅→∅),[5.14937]→[4.5451:5529](∅→∅),[4.5529]→[5.15015:15032](∅→∅),[5.15015]→[5.15015:15032](∅→∅),[5.15032]→[4.5530:5545](∅→∅)
][[package]]name = "libc"version = "0.2.81"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb"[[package]]name = "lock_api"version = "0.4.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312"dependencies = ["scopeguard", - edit in Cargo.lock at line 84[5.15542]→[5.15542:15734](∅→∅),[5.15734]→[4.5546:5564](∅→∅),[4.5564]→[5.15745:15760](∅→∅),[5.15745]→[5.15745:15760](∅→∅)
name = "log"version = "0.4.11"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"dependencies = ["cfg-if 0.1.10",][[package]] - edit in Cargo.lock at line 94[5.16128]→[5.16128:16141](∅→∅),[5.16141]→[4.5565:5596](∅→∅),[4.5596]→[5.16172:16237](∅→∅),[5.16172]→[5.16172:16237](∅→∅),[5.16237]→[4.5597:6165](∅→∅),[4.6165]→[5.16315:16332](∅→∅),[5.16315]→[5.16315:16332](∅→∅),[5.16332]→[4.6166:6321](∅→∅),[4.6321]→[5.16361:16363](∅→∅),[5.16361]→[5.16361:16363](∅→∅)
[[package]]name = "mio"version = "0.7.7"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e50ae3f04d169fcc9bde0b547d1c205219b7157e07ded9c5aff03e0637cb3ed7"dependencies = ["libc","log","miow","ntapi","winapi",][[package]]name = "miow"version = "0.3.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897"dependencies = ["socket2","winapi",][[package]]name = "native-tls"version = "0.2.7"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4"dependencies = ["lazy_static","libc","log","openssl","openssl-probe","openssl-sys","schannel","security-framework","security-framework-sys","tempfile",] - edit in Cargo.lock at line 105[5.5610]→[4.6322:6541](∅→∅),[4.6541]→[5.5610:5625](∅→∅),[5.5610]→[5.5610:5625](∅→∅),[5.5625]→[5.16376:16599](∅→∅),[5.16376]→[5.16376:16599](∅→∅),[5.16599]→[5.5626:5639](∅→∅),[5.5639]→[4.6542:6579](∅→∅),[4.6579]→[5.5672:5737](∅→∅),[5.5672]→[5.5672:5737](∅→∅),[5.5737]→[4.6580:6658](∅→∅),[5.5815]→[5.16599:16612](∅→∅),[4.6658]→[5.16599:16612](∅→∅),[5.16599]→[5.16599:16612](∅→∅),[5.16612]→[4.6659:6983](∅→∅),[4.6983]→[5.16640:16658](∅→∅),[5.16640]→[5.16640:16658](∅→∅),[5.16658]→[4.6984:7448](∅→∅),[4.7448]→[5.16658:16723](∅→∅),[5.16658]→[5.16658:16723](∅→∅),[5.16723]→[4.7449:7896](∅→∅)
][[package]]name = "ntapi"version = "0.3.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44"dependencies = ["winapi",][[package]]name = "num_cpus"version = "1.13.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"dependencies = ["hermit-abi","libc",][[package]]name = "once_cell"version = "1.5.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0"[[package]]name = "openssl"version = "0.10.32"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "038d43985d1ddca7a9900630d8cd031b56e4794eecc2e9ea39dd17aa04399a70"dependencies = ["bitflags","cfg-if 1.0.0","foreign-types","lazy_static","libc","openssl-sys",][[package]]name = "openssl-probe"version = "0.1.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"[[package]]name = "openssl-sys"version = "0.9.60"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "921fc71883267538946025deffb622905ecad223c28efbfdef9bb59a0175f3e6"dependencies = ["autocfg","cc","libc","pkg-config","vcpkg",][[package]]name = "parking_lot"version = "0.11.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"dependencies = ["instant","lock_api","parking_lot_core",][[package]]name = "parking_lot_core"version = "0.8.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272"dependencies = ["cfg-if 1.0.0","instant","libc","redox_syscall 0.1.57","smallvec","winapi", - edit in Cargo.lock at line 118[5.17001]→[5.17001:17014](∅→∅),[5.17014]→[4.8088:8132](∅→∅),[4.8132]→[5.17051:17116](∅→∅),[5.17051]→[5.17051:17116](∅→∅),[5.17116]→[4.8133:8211](∅→∅),[4.8211]→[5.17194:17389](∅→∅),[5.17194]→[5.17194:17389](∅→∅)
[[package]]name = "pin-project-lite"version = "0.2.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "439697af366c49a6d0a010c56a0d97685bc140ce0d377b13a2ea2aa42d64a827"[[package]]name = "pkg-config"version = "0.3.19"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" - edit in Cargo.lock at line 120
name = "ppv-lite86"version = "0.2.10"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"[[package]] - edit in Cargo.lock at line 142[5.5993]→[5.5993:6006](∅→∅),[5.6006]→[4.8408:8440](∅→∅),[4.8440]→[5.18085:18150](∅→∅),[5.18085]→[5.18085:18150](∅→∅),[5.18150]→[4.8441:8832](∅→∅)
[[package]]name = "rand"version = "0.8.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "18519b42a40024d661e1714153e9ad0c3de27cd495760ceb09710920f1098b1e"dependencies = ["libc","rand_chacha","rand_core","rand_hc",][[package]]name = "rand_chacha"version = "0.3.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d"dependencies = ["ppv-lite86","rand_core",] - edit in Cargo.lock at line 144[4.8845]→[4.8845:9249](∅→∅),[4.9249]→[5.18228:18245](∅→∅),[5.18228]→[5.18228:18245](∅→∅),[5.18245]→[4.9250:9264](∅→∅),[4.9264]→[5.18307:18322](∅→∅),[5.18307]→[5.18307:18322](∅→∅),[5.18322]→[4.9265:9307](∅→∅),[4.9307]→[5.18363:18428](∅→∅),[5.18363]→[5.18363:18428](∅→∅),[5.18428]→[4.9308:9386](∅→∅),[4.9386]→[5.18506:18519](∅→∅),[5.18506]→[5.18506:18519](∅→∅),[5.18519]→[4.9387:9428](∅→∅),[4.9428]→[5.18557:18622](∅→∅),[5.18557]→[5.18557:18622](∅→∅),[5.18622]→[4.9429:9767](∅→∅),[4.9767]→[5.6007:6020](∅→∅),[5.18700]→[5.6007:6020](∅→∅)
name = "rand_core"version = "0.6.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "c026d7df8b298d90ccbbc5190bd04d85e159eaf5576caeacf8741da93ccbd2e5"dependencies = ["getrandom",][[package]]name = "rand_hc"version = "0.3.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"dependencies = ["rand_core",][[package]]name = "redox_syscall"version = "0.1.57"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"[[package]]name = "redox_syscall"version = "0.2.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "05ec8ca9416c5ea37062b502703cd7fcb207736bc294f6e0cf367ac6fc234570"dependencies = ["bitflags",][[package]]name = "remove_dir_all"version = "0.5.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"dependencies = ["winapi",][[package]] - edit in Cargo.lock at line 148[5.6194]→[4.9768:10773](∅→∅),[5.6194]→[5.18700:18713](∅→∅),[4.10773]→[5.18700:18713](∅→∅),[5.18700]→[5.18700:18713](∅→∅),[5.18713]→[4.10774:11042](∅→∅),[4.11042]→[5.18746:18811](∅→∅),[5.18746]→[5.18746:18811](∅→∅),[5.18811]→[4.11043:11121](∅→∅)
[[package]]name = "schannel"version = "0.1.19"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75"dependencies = ["lazy_static","winapi",][[package]]name = "scopeguard"version = "1.1.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"[[package]]name = "security-framework"version = "2.0.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "c1759c2e3c8580017a484a7ac56d3abc5a6c1feadf88db2f3633f12ae4268c69"dependencies = ["bitflags","core-foundation","core-foundation-sys","libc","security-framework-sys",][[package]]name = "security-framework-sys"version = "2.0.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f99b9d5e26d2a71633cc4f2ebae7cc9f874044e0c351a27e17892d76dce5678b"dependencies = ["core-foundation-sys","libc",][[package]]name = "signal-hook-registry"version = "1.3.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "16f1d0fef1604ba8f7a073c7e701f213e056707210e9020af4528e0101ce11a6"dependencies = ["libc",][[package]]name = "smallvec"version = "1.6.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" - edit in Cargo.lock at line 150[5.18902]→[4.11122:11301](∅→∅),[4.11301]→[5.18937:18954](∅→∅),[5.18937]→[5.18937:18954](∅→∅),[5.18954]→[4.11302:11339](∅→∅),[4.11339]→[5.18998:19013](∅→∅),[5.18998]→[5.18998:19013](∅→∅)
name = "socket2"version = "0.3.19"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e"dependencies = ["cfg-if 1.0.0","libc","winapi",][[package]] - edit in Cargo.lock at line 171[5.6584]→[5.19190:19203](∅→∅),[5.19190]→[5.19190:19203](∅→∅),[5.19203]→[4.11513:11549](∅→∅),[4.11549]→[5.19240:19305](∅→∅),[5.19240]→[5.19240:19305](∅→∅),[5.19305]→[4.11550:11628](∅→∅),[4.11628]→[5.19383:19400](∅→∅),[5.19383]→[5.19383:19400](∅→∅),[5.19400]→[4.11629:11718](∅→∅),[4.11718]→[5.19416:19418](∅→∅),[5.19416]→[5.19416:19418](∅→∅)
[[package]]name = "tempfile"version = "3.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22"dependencies = ["cfg-if 1.0.0","libc","rand","redox_syscall 0.2.4","remove_dir_all","winapi",] - edit in Cargo.lock at line 208
name = "tokio"version = "1.0.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d258221f566b6c803c7b4714abadc080172b272090cdc5e244a6d4dd13c3a6bd"dependencies = ["autocfg","bytes","libc","memchr","mio","num_cpus","once_cell","parking_lot","pin-project-lite","signal-hook-registry","tokio-macros","winapi",][[package]]name = "tokio-macros"version = "1.0.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "42517d2975ca3114b22a16192634e8241dc5cc1f130be194645970cc1c371494"dependencies = ["proc-macro2","quote","syn",][[package]]name = "tokio-native-tls"version = "0.3.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b"dependencies = ["native-tls","tokio",][[package]] - edit in Cargo.lock at line 242[5.21430]→[5.21430:21443](∅→∅),[5.21443]→[4.12884:12918](∅→∅),[4.12918]→[5.21478:21543](∅→∅),[5.21478]→[5.21478:21543](∅→∅),[5.21543]→[4.12919:12997](∅→∅)
[[package]]name = "vcpkg"version = "0.2.11"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb" - edit in Cargo.lock at line 250[5.21831]→[4.12998:13033](∅→∅),[4.13033]→[5.22007:22024](∅→∅),[5.22007]→[5.22007:22024](∅→∅),[5.22024]→[4.13034:13087](∅→∅),[4.13087]→[5.22033:22035](∅→∅),[5.22033]→[5.22033:22035](∅→∅),[5.22035]→[4.13088:13300](∅→∅),[4.13300]→[5.22035:22531](∅→∅),[5.22035]→[5.22035:22531](∅→∅),[5.22756]→[5.22756:22955](∅→∅),[5.22955]→[5.6585:6598](∅→∅)
name = "voskhod"version = "0.1.0"dependencies = ["anyhow","gemini","tokio","tokio-native-tls",][[package]]name = "wasi"version = "0.10.1+wasi-snapshot-preview1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "93c6c3420963c5c64bca373b25e77acb562081b9bb4dd5bb864187742186cea9"[[package]]name = "winapi"version = "0.3.9"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"dependencies = ["winapi-i686-pc-windows-gnu","winapi-x86_64-pc-windows-gnu",][[package]]name = "winapi-i686-pc-windows-gnu"version = "0.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"[[package]]name = "winapi-x86_64-pc-windows-gnu"version = "0.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"[[package]]