echoes 0.12.0

Find duplicated Rust doctests, functions and contexts
Documentation
[
  {
    "id": "lw_temporary",
    "family": "loop_while_let",
    "a": "struct T(u32); impl Drop for T { fn drop(&mut self) { println!(\"drop {}\", self.0); } } impl T { fn value(&self) -> Option<u32> { (self.0 < 3).then_some(self.0) } } fn make(n: &mut u32) -> T { *n += 1; T(*n) } fn main() { let mut n = 0; loop { match make(&mut n).value() { Some(v) => println!(\"body {}\", v), None => break } } println!(\"end\"); }",
    "b": "struct T(u32); impl Drop for T { fn drop(&mut self) { println!(\"drop {}\", self.0); } } impl T { fn value(&self) -> Option<u32> { (self.0 < 3).then_some(self.0) } } fn make(n: &mut u32) -> T { *n += 1; T(*n) } fn main() { let mut n = 0; while let Some(v) = make(&mut n).value() { println!(\"body {}\", v) } println!(\"end\"); }",
    "expected": "same",
    "expect": {
      "a": {
        "off": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 1\ndrop 1\nbody 2\ndrop 2\ndrop 3\nend\n"
        },
        "on": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 1\ndrop 1\nbody 2\ndrop 2\ndrop 3\nend\n"
        }
      },
      "b": {
        "off": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 1\ndrop 1\nbody 2\ndrop 2\ndrop 3\nend\n"
        },
        "on": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 1\ndrop 1\nbody 2\ndrop 2\ndrop 3\nend\n"
        }
      }
    }
  },
  {
    "id": "lw_wildcard_first",
    "family": "loop_while_let",
    "a": "struct T(u32); impl Drop for T { fn drop(&mut self) { println!(\"drop {}\", self.0); } } impl T { fn value(&self) -> Option<u32> { (self.0 < 3).then_some(self.0) } } fn make(n: &mut u32) -> T { *n += 1; T(*n) } fn main() { let mut n = 0; loop { match make(&mut n).value() { None => break, Some(v) => { println!(\"body {}\", v); } } } println!(\"end\"); }",
    "b": "struct T(u32); impl Drop for T { fn drop(&mut self) { println!(\"drop {}\", self.0); } } impl T { fn value(&self) -> Option<u32> { (self.0 < 3).then_some(self.0) } } fn make(n: &mut u32) -> T { *n += 1; T(*n) } fn main() { let mut n = 0; while let Some(v) = make(&mut n).value() { println!(\"body {}\", v); } println!(\"end\"); }",
    "expected": "same",
    "expect": {
      "a": {
        "off": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 1\ndrop 1\nbody 2\ndrop 2\ndrop 3\nend\n"
        },
        "on": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 1\ndrop 1\nbody 2\ndrop 2\ndrop 3\nend\n"
        }
      },
      "b": {
        "off": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 1\ndrop 1\nbody 2\ndrop 2\ndrop 3\nend\n"
        },
        "on": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 1\ndrop 1\nbody 2\ndrop 2\ndrop 3\nend\n"
        }
      }
    }
  },
  {
    "id": "lw_jumps",
    "family": "loop_while_let",
    "a": "struct T(u32); impl Drop for T { fn drop(&mut self) { println!(\"drop {}\", self.0); } } impl T { fn value(&self) -> Option<u32> { (self.0 < 3).then_some(self.0) } } fn make(n: &mut u32) -> T { *n += 1; T(*n) } fn main() { let mut n = 0; loop { match make(&mut n).value() { Some(v) => { if v == 1 { continue; } println!(\"body {}\", v); if v == 2 { break; } } _ => break } } println!(\"end\"); }",
    "b": "struct T(u32); impl Drop for T { fn drop(&mut self) { println!(\"drop {}\", self.0); } } impl T { fn value(&self) -> Option<u32> { (self.0 < 3).then_some(self.0) } } fn make(n: &mut u32) -> T { *n += 1; T(*n) } fn main() { let mut n = 0; while let Some(v) = make(&mut n).value() { if v == 1 { continue; } println!(\"body {}\", v); if v == 2 { break; } } println!(\"end\"); }",
    "expected": "same",
    "expect": {
      "a": {
        "off": {
          "compile": "ok",
          "run": "value",
          "stdout": "drop 1\nbody 2\ndrop 2\nend\n"
        },
        "on": {
          "compile": "ok",
          "run": "value",
          "stdout": "drop 1\nbody 2\ndrop 2\nend\n"
        }
      },
      "b": {
        "off": {
          "compile": "ok",
          "run": "value",
          "stdout": "drop 1\nbody 2\ndrop 2\nend\n"
        },
        "on": {
          "compile": "ok",
          "run": "value",
          "stdout": "drop 1\nbody 2\ndrop 2\nend\n"
        }
      }
    }
  },
  {
    "id": "lw_place",
    "family": "loop_while_let",
    "a": "struct T(u32); impl Drop for T { fn drop(&mut self) { println!(\"drop {}\", self.0); } } impl T { fn value(&self) -> Option<u32> { (self.0 < 3).then_some(self.0) } } fn make(n: &mut u32) -> T { *n += 1; T(*n) } fn main() { let mut o = Some(3u32); loop { match o { Some(x) => { println!(\"body {}\", x); o = x.checked_sub(1).filter(|v| *v > 0); } None => break } } println!(\"end\"); }",
    "b": "struct T(u32); impl Drop for T { fn drop(&mut self) { println!(\"drop {}\", self.0); } } impl T { fn value(&self) -> Option<u32> { (self.0 < 3).then_some(self.0) } } fn make(n: &mut u32) -> T { *n += 1; T(*n) } fn main() { let mut o = Some(3u32); while let Some(x) = o { println!(\"body {}\", x); o = x.checked_sub(1).filter(|v| *v > 0); } println!(\"end\"); }",
    "expected": "same",
    "expect": {
      "a": {
        "off": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 3\nbody 2\nbody 1\nend\n"
        },
        "on": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 3\nbody 2\nbody 1\nend\n"
        }
      },
      "b": {
        "off": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 3\nbody 2\nbody 1\nend\n"
        },
        "on": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 3\nbody 2\nbody 1\nend\n"
        }
      }
    }
  },
  {
    "id": "lw_let_else",
    "family": "loop_while_let",
    "a": "struct T(u32); impl Drop for T { fn drop(&mut self) { println!(\"drop {}\", self.0); } } impl T { fn value(&self) -> Option<u32> { (self.0 < 3).then_some(self.0) } } fn make(n: &mut u32) -> T { *n += 1; T(*n) } fn main() { let mut n = 0; loop { let Some(v) = make(&mut n).value() else { break }; println!(\"body {}\", v); } println!(\"end\"); }",
    "b": "struct T(u32); impl Drop for T { fn drop(&mut self) { println!(\"drop {}\", self.0); } } impl T { fn value(&self) -> Option<u32> { (self.0 < 3).then_some(self.0) } } fn make(n: &mut u32) -> T { *n += 1; T(*n) } fn main() { let mut n = 0; while let Some(v) = make(&mut n).value() { println!(\"body {}\", v); } println!(\"end\"); }",
    "expected": "different",
    "expect": {
      "a": {
        "off": {
          "compile": "ok",
          "run": "value",
          "stdout": "drop 1\nbody 1\ndrop 2\nbody 2\ndrop 3\nend\n"
        },
        "on": {
          "compile": "ok",
          "run": "value",
          "stdout": "drop 1\nbody 1\ndrop 2\nbody 2\ndrop 3\nend\n"
        }
      },
      "b": {
        "off": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 1\ndrop 1\nbody 2\ndrop 2\ndrop 3\nend\n"
        },
        "on": {
          "compile": "ok",
          "run": "value",
          "stdout": "body 1\ndrop 1\nbody 2\ndrop 2\ndrop 3\nend\n"
        }
      }
    }
  }
]