)]}'
{"tvix/nix-compat/src/narinfo.rs":[{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"57270a9ff75fca22a6b7b196e6a14e09e33e75f9","unresolved":true,"context_lines":[{"line_number":1,"context_line":"use data_encoding::BASE64;"},{"line_number":2,"context_line":"use std::{"},{"line_number":3,"context_line":"    fmt::{self, Display},"},{"line_number":4,"context_line":"    mem,"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"12c6475e_537a7305","line":1,"updated":"2023-10-27 08:21:15.000000000","message":"This needs a module-level docstring explaining the concept of narinfo, similarly as to how we explain NAR and The nix A-Terms (or the NarInfo struct).","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000005,"name":"edef","email":"edef@edef.eu","username":"edef"},"change_message_id":"bc3d71ed9895d20d4734a752eb12f01fc807a7db","unresolved":false,"context_lines":[{"line_number":1,"context_line":"use data_encoding::BASE64;"},{"line_number":2,"context_line":"use std::{"},{"line_number":3,"context_line":"    fmt::{self, Display},"},{"line_number":4,"context_line":"    mem,"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"cd5dc262_298cba84","line":1,"in_reply_to":"12c6475e_537a7305","updated":"2023-10-27 16:03:07.000000000","message":"Done","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"57270a9ff75fca22a6b7b196e6a14e09e33e75f9","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"#[derive(Debug)]"},{"line_number":10,"context_line":"pub struct NarInfo\u003c\u0027a\u003e {"},{"line_number":11,"context_line":"    // core (authenticated, but unverified here)"},{"line_number":12,"context_line":"    pub store_path: StorePath\u003c\u0027a\u003e,"},{"line_number":13,"context_line":"    pub nar_hash: [u8; 32],"},{"line_number":14,"context_line":"    pub nar_size: u64,"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"26f91f2a_98ea8232","line":11,"updated":"2023-10-27 08:21:15.000000000","message":"In addition to mentioning what\u0027s authenticated and what\u0027s not, each field should have a docstring. You can peek a bit in the nix-store proto definitions.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000005,"name":"edef","email":"edef@edef.eu","username":"edef"},"change_message_id":"bc3d71ed9895d20d4734a752eb12f01fc807a7db","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"#[derive(Debug)]"},{"line_number":10,"context_line":"pub struct NarInfo\u003c\u0027a\u003e {"},{"line_number":11,"context_line":"    // core (authenticated, but unverified here)"},{"line_number":12,"context_line":"    pub store_path: StorePath\u003c\u0027a\u003e,"},{"line_number":13,"context_line":"    pub nar_hash: [u8; 32],"},{"line_number":14,"context_line":"    pub nar_size: u64,"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"347db8a8_70904dbd","line":11,"in_reply_to":"26f91f2a_98ea8232","updated":"2023-10-27 16:03:07.000000000","message":"Done","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"57270a9ff75fca22a6b7b196e6a14e09e33e75f9","unresolved":true,"context_lines":[{"line_number":27,"context_line":"}"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"impl\u003c\u0027a\u003e NarInfo\u003c\u0027a\u003e {"},{"line_number":30,"context_line":"    pub fn parse(input: \u0026\u0027a str) -\u003e Option\u003cSelf\u003e {"},{"line_number":31,"context_line":"        let mut store_path \u003d None;"},{"line_number":32,"context_line":"        let mut url \u003d None;"},{"line_number":33,"context_line":"        let mut compression \u003d None;"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"cff70f01_2c519157","line":30,"updated":"2023-10-27 08:21:15.000000000","message":"This should probably return errors in case parsing fails, stating the reason as to why it fails.\n\nIt can be done as a followup, or is there a specific reason this would be much slower if we would do it like this (in the successful parsing case)","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000005,"name":"edef","email":"edef@edef.eu","username":"edef"},"change_message_id":"bc3d71ed9895d20d4734a752eb12f01fc807a7db","unresolved":false,"context_lines":[{"line_number":27,"context_line":"}"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"impl\u003c\u0027a\u003e NarInfo\u003c\u0027a\u003e {"},{"line_number":30,"context_line":"    pub fn parse(input: \u0026\u0027a str) -\u003e Option\u003cSelf\u003e {"},{"line_number":31,"context_line":"        let mut store_path \u003d None;"},{"line_number":32,"context_line":"        let mut url \u003d None;"},{"line_number":33,"context_line":"        let mut compression \u003d None;"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"b117a0b0_c74eb027","line":30,"in_reply_to":"cff70f01_2c519157","updated":"2023-10-27 16:03:07.000000000","message":"ACK. Followup soon.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"57270a9ff75fca22a6b7b196e6a14e09e33e75f9","unresolved":true,"context_lines":[{"line_number":262,"context_line":"}"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"#[derive(PartialEq, Eq)]"},{"line_number":265,"context_line":"pub struct StorePath\u003c\u0027a\u003e {"},{"line_number":266,"context_line":"    hash: [u8; 20],"},{"line_number":267,"context_line":"    name: \u0026\u0027a str,"},{"line_number":268,"context_line":"}"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"3fdd1ddd_cbc140ae","line":265,"updated":"2023-10-27 08:21:15.000000000","message":"This is very similar to the StorePath we already have in nix-compat (except that one holds a String, rather than a `\u0026str`. I\u0027d much prefer to refactor that one to cow strings than introducing a new type here, especially considering it\u0027s public.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"c70058dd777fd28e398844a90966ffae7a26586b","unresolved":false,"context_lines":[{"line_number":262,"context_line":"}"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"#[derive(PartialEq, Eq)]"},{"line_number":265,"context_line":"pub struct StorePath\u003c\u0027a\u003e {"},{"line_number":266,"context_line":"    hash: [u8; 20],"},{"line_number":267,"context_line":"    name: \u0026\u0027a str,"},{"line_number":268,"context_line":"}"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"c1502732_4b01005b","line":265,"in_reply_to":"2638130c_840ad49b","updated":"2023-10-27 13:30:16.000000000","message":"This has been refactored in the meantime, there\u0027s now a `StorePathRef` in nix-compat.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"ebfd589cf851ccf266dcdefcd0c5f5f94eccbcf0","unresolved":true,"context_lines":[{"line_number":262,"context_line":"}"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"#[derive(PartialEq, Eq)]"},{"line_number":265,"context_line":"pub struct StorePath\u003c\u0027a\u003e {"},{"line_number":266,"context_line":"    hash: [u8; 20],"},{"line_number":267,"context_line":"    name: \u0026\u0027a str,"},{"line_number":268,"context_line":"}"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"2638130c_840ad49b","line":265,"in_reply_to":"3fdd1ddd_cbc140ae","updated":"2023-10-27 08:28:48.000000000","message":"We will at some point use this and have to convert to the other StorePath, so it doesn\u0027t make much sense to have two separate ecosystems.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"57270a9ff75fca22a6b7b196e6a14e09e33e75f9","unresolved":true,"context_lines":[{"line_number":307,"context_line":"}"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"impl\u003c\u0027a\u003e Signature\u003c\u0027a\u003e {"},{"line_number":310,"context_line":"    pub fn parse(input: \u0026\u0027a str) -\u003e Option\u003cSignature\u003c\u0027a\u003e\u003e {"},{"line_number":311,"context_line":"        let (name, bytes64) \u003d input.split_once(\u0027:\u0027)?;"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        let mut buf \u003d [0; 66];"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"9ca1da46_9122454d","line":310,"updated":"2023-10-27 08:21:15.000000000","message":"Same as above, parsing should be an error, not just an `Option\u003cSelf\u003e`.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000005,"name":"edef","email":"edef@edef.eu","username":"edef"},"change_message_id":"bc3d71ed9895d20d4734a752eb12f01fc807a7db","unresolved":false,"context_lines":[{"line_number":307,"context_line":"}"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"impl\u003c\u0027a\u003e Signature\u003c\u0027a\u003e {"},{"line_number":310,"context_line":"    pub fn parse(input: \u0026\u0027a str) -\u003e Option\u003cSignature\u003c\u0027a\u003e\u003e {"},{"line_number":311,"context_line":"        let (name, bytes64) \u003d input.split_once(\u0027:\u0027)?;"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        let mut buf \u003d [0; 66];"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"4be77fc8_adc4369e","line":310,"in_reply_to":"9ca1da46_9122454d","updated":"2023-10-27 16:03:07.000000000","message":"Acknowledged","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"57270a9ff75fca22a6b7b196e6a14e09e33e75f9","unresolved":true,"context_lines":[{"line_number":340,"context_line":"}"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"#[derive(Debug, Clone)]"},{"line_number":343,"context_line":"pub enum ContentAddressed {"},{"line_number":344,"context_line":"    Flat(Hash),"},{"line_number":345,"context_line":"    Text([u8; 32]),"},{"line_number":346,"context_line":"    Nar([u8; 32]),"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"75814ebb_5e70d06d","line":343,"updated":"2023-10-27 08:21:15.000000000","message":"Very similar to `nix-compat::nix_compat::CAHash`","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"ebfd589cf851ccf266dcdefcd0c5f5f94eccbcf0","unresolved":true,"context_lines":[{"line_number":340,"context_line":"}"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"#[derive(Debug, Clone)]"},{"line_number":343,"context_line":"pub enum ContentAddressed {"},{"line_number":344,"context_line":"    Flat(Hash),"},{"line_number":345,"context_line":"    Text([u8; 32]),"},{"line_number":346,"context_line":"    Nar([u8; 32]),"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"99e35227_7c433da9","line":343,"in_reply_to":"75814ebb_5e70d06d","updated":"2023-10-27 08:28:48.000000000","message":"We will at some point use this and have to convert to the other CAHash, so it doesn\u0027t make much sense to have two separate ecosystems.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000005,"name":"edef","email":"edef@edef.eu","username":"edef"},"change_message_id":"6957b70194ff5008de6f815f2521c3f619cdfe9f","unresolved":false,"context_lines":[{"line_number":340,"context_line":"}"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"#[derive(Debug, Clone)]"},{"line_number":343,"context_line":"pub enum ContentAddressed {"},{"line_number":344,"context_line":"    Flat(Hash),"},{"line_number":345,"context_line":"    Text([u8; 32]),"},{"line_number":346,"context_line":"    Nar([u8; 32]),"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"314e8cd3_267046b4","line":343,"in_reply_to":"99e35227_7c433da9","updated":"2023-10-27 11:15:09.000000000","message":"Done","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"57270a9ff75fca22a6b7b196e6a14e09e33e75f9","unresolved":true,"context_lines":[{"line_number":347,"context_line":"}"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"impl ContentAddressed {"},{"line_number":350,"context_line":"    pub fn parse(s: \u0026str) -\u003e Option\u003cSelf\u003e {"},{"line_number":351,"context_line":"        let (tag, s) \u003d s.split_once(\u0027:\u0027)?;"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        match tag {"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"a31d450f_172f5427","line":350,"updated":"2023-10-27 08:21:15.000000000","message":"There\u0027s currently no `parse` function in `nix-compat::nix_compat::CAHash`, as it wasn\u0027t necessary yet.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000005,"name":"edef","email":"edef@edef.eu","username":"edef"},"change_message_id":"f9241ef61f785a650f0cf1a93e008a116165854b","unresolved":false,"context_lines":[{"line_number":347,"context_line":"}"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"impl ContentAddressed {"},{"line_number":350,"context_line":"    pub fn parse(s: \u0026str) -\u003e Option\u003cSelf\u003e {"},{"line_number":351,"context_line":"        let (tag, s) \u003d s.split_once(\u0027:\u0027)?;"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        match tag {"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"a1281e13_898d66c3","line":350,"in_reply_to":"a31d450f_172f5427","updated":"2023-10-27 13:45:21.000000000","message":"Converted to parse_ca, which returns CAHash.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"57270a9ff75fca22a6b7b196e6a14e09e33e75f9","unresolved":true,"context_lines":[{"line_number":364,"context_line":"                    Hash::parse(s).map(ContentAddressed::Flat)"},{"line_number":365,"context_line":"                }"},{"line_number":366,"context_line":"            }"},{"line_number":367,"context_line":"            _ \u003d\u003e None,"},{"line_number":368,"context_line":"        }"},{"line_number":369,"context_line":"    }"},{"line_number":370,"context_line":"}"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"b64ca5d9_7b9c6822","line":367,"updated":"2023-10-27 08:21:15.000000000","message":"This should be a parsing error.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000005,"name":"edef","email":"edef@edef.eu","username":"edef"},"change_message_id":"bc3d71ed9895d20d4734a752eb12f01fc807a7db","unresolved":false,"context_lines":[{"line_number":364,"context_line":"                    Hash::parse(s).map(ContentAddressed::Flat)"},{"line_number":365,"context_line":"                }"},{"line_number":366,"context_line":"            }"},{"line_number":367,"context_line":"            _ \u003d\u003e None,"},{"line_number":368,"context_line":"        }"},{"line_number":369,"context_line":"    }"},{"line_number":370,"context_line":"}"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"406e2fad_6b0c5828","line":367,"in_reply_to":"b64ca5d9_7b9c6822","updated":"2023-10-27 16:03:07.000000000","message":"Acknowledged","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"57270a9ff75fca22a6b7b196e6a14e09e33e75f9","unresolved":true,"context_lines":[{"line_number":386,"context_line":"}"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"#[derive(Debug, Clone)]"},{"line_number":389,"context_line":"pub enum Hash {"},{"line_number":390,"context_line":"    Md5([u8; 16]),"},{"line_number":391,"context_line":"    Sha1([u8; 20]),"},{"line_number":392,"context_line":"    Sha256([u8; 32]),"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"8b2e9068_7b753874","line":389,"updated":"2023-10-27 08:21:15.000000000","message":"Very similar to `nix-compat::nix_compat::NixHash`.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"ebfd589cf851ccf266dcdefcd0c5f5f94eccbcf0","unresolved":true,"context_lines":[{"line_number":386,"context_line":"}"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"#[derive(Debug, Clone)]"},{"line_number":389,"context_line":"pub enum Hash {"},{"line_number":390,"context_line":"    Md5([u8; 16]),"},{"line_number":391,"context_line":"    Sha1([u8; 20]),"},{"line_number":392,"context_line":"    Sha256([u8; 32]),"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"b04c4ed0_3223527d","line":389,"in_reply_to":"8b2e9068_7b753874","updated":"2023-10-27 08:28:48.000000000","message":"We will at some point use this and have to convert to the other NixHash, so it doesn\u0027t make much sense to have two separate ecosystems.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000005,"name":"edef","email":"edef@edef.eu","username":"edef"},"change_message_id":"6957b70194ff5008de6f815f2521c3f619cdfe9f","unresolved":false,"context_lines":[{"line_number":386,"context_line":"}"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"#[derive(Debug, Clone)]"},{"line_number":389,"context_line":"pub enum Hash {"},{"line_number":390,"context_line":"    Md5([u8; 16]),"},{"line_number":391,"context_line":"    Sha1([u8; 20]),"},{"line_number":392,"context_line":"    Sha256([u8; 32]),"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"8beb42d8_92d8194a","line":389,"in_reply_to":"b04c4ed0_3223527d","updated":"2023-10-27 11:15:09.000000000","message":"Done","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"57270a9ff75fca22a6b7b196e6a14e09e33e75f9","unresolved":true,"context_lines":[{"line_number":394,"context_line":"}"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"impl Hash {"},{"line_number":397,"context_line":"    pub fn parse(s: \u0026str) -\u003e Option\u003cSelf\u003e {"},{"line_number":398,"context_line":"        let (tag, digest) \u003d s.split_once(\u0027:\u0027)?;"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"        (match tag {"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"ab176ef3_31805b28","line":397,"updated":"2023-10-27 08:21:15.000000000","message":"`nix_compat::nixhash::from_nix_str`","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000005,"name":"edef","email":"edef@edef.eu","username":"edef"},"change_message_id":"f9241ef61f785a650f0cf1a93e008a116165854b","unresolved":false,"context_lines":[{"line_number":394,"context_line":"}"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"impl Hash {"},{"line_number":397,"context_line":"    pub fn parse(s: \u0026str) -\u003e Option\u003cSelf\u003e {"},{"line_number":398,"context_line":"        let (tag, digest) \u003d s.split_once(\u0027:\u0027)?;"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"        (match tag {"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"659078f5_ca9c4ad8","line":397,"in_reply_to":"ab176ef3_31805b28","updated":"2023-10-27 13:45:21.000000000","message":"That doesn\u0027t parse exclusively base32 Nix hashes, but instead dispatches on encoding size.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"57270a9ff75fca22a6b7b196e6a14e09e33e75f9","unresolved":true,"context_lines":[{"line_number":410,"context_line":"    }"},{"line_number":411,"context_line":"}"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"impl Display for Hash {"},{"line_number":414,"context_line":"    fn fmt(\u0026self, w: \u0026mut fmt::Formatter) -\u003e fmt::Result {"},{"line_number":415,"context_line":"        let (tag, digest) \u003d match self {"},{"line_number":416,"context_line":"            Hash::Md5(d) \u003d\u003e (\"md5\", \u0026d[..]),"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"fe3d6c93_bf789dab","line":413,"updated":"2023-10-27 08:21:15.000000000","message":"That\u0027s `NixHash::to_nix_hash_string`, I explicitly decided against implementing using `Display` for the nix-specific way of formatting this, to avoid confusion with others (more standardized) ways of formatting.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"},{"author":{"_account_id":1000005,"name":"edef","email":"edef@edef.eu","username":"edef"},"change_message_id":"6957b70194ff5008de6f815f2521c3f619cdfe9f","unresolved":false,"context_lines":[{"line_number":410,"context_line":"    }"},{"line_number":411,"context_line":"}"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"impl Display for Hash {"},{"line_number":414,"context_line":"    fn fmt(\u0026self, w: \u0026mut fmt::Formatter) -\u003e fmt::Result {"},{"line_number":415,"context_line":"        let (tag, digest) \u003d match self {"},{"line_number":416,"context_line":"            Hash::Md5(d) \u003d\u003e (\"md5\", \u0026d[..]),"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"5e913029_9a2389f1","line":413,"in_reply_to":"fe3d6c93_bf789dab","updated":"2023-10-27 11:15:09.000000000","message":"to_nix_hash_string does hex, this does base32.","commit_id":"0473c8b26e83b0538ee474367743a435d5085462"}]}
