Rust library that provides helpers for testing resilience of I/O operations.

Overview

partial-io

partial-io on crates.io Documentation (latest release) Documentation (main) License

Helpers for testing I/O behavior with partial, interrupted and blocking reads and writes.

This library provides:

  • PartialRead and PartialWrite, which wrap existing Read and Write implementations and allow specifying arbitrary behavior on the next read, write or flush call.
  • With the optional futures03 and tokio1 features, PartialAsyncRead and PartialAsyncWrite to wrap existing AsyncRead and AsyncWrite implementations. These implementations are task-aware, so they will know how to pause and unpause tasks if they return a WouldBlock error.
  • With the optional proptest1 (proptest) and quickcheck1 (quickcheck) features, generation of random sequences of operations for property-based testing. See the proptest_types and quickcheck_types documentation for more.

Motivation

A Read or Write wrapper is conceptually simple but can be difficult to get right, especially if the wrapper has an internal buffer. Common issues include:

  • A partial read or write, even without an error, might leave the wrapper in an invalid state (example fix).

With the AsyncRead and AsyncWrite provided by futures03 and tokio1:

  • A call to read_to_end or write_all within the wrapper might be partly successful but then error out. These functions will return the error without informing the caller of how much was read or written. Wrappers with an internal buffer will want to advance their state corresponding to the partial success, so they can't use read_to_end or write_all (example fix).
  • Instances must propagate Poll::Pending up, but that shouldn't leave them in an invalid state.

These situations can be hard to think about and hard to test.

partial-io can help in two ways:

  1. For a known bug involving any of these situations, partial-io can help you write a test.
  2. With the quickcheck1 feature enabled, partial-io can also help shake out bugs in your wrapper. See quickcheck_types for more.

Examples

use std::io::{self, Cursor, Read};

use partial_io::{PartialOp, PartialRead};

let data = b"Hello, world!".to_vec();
let cursor = Cursor::new(data);  // Cursor<Vec<u8>> implements io::Read
let ops = vec![PartialOp::Limited(7), PartialOp::Err(io::ErrorKind::Interrupted)];
let mut partial_read = PartialRead::new(cursor, ops);

let mut out = vec![0; 256];

// The first read will read 7 bytes.
assert_eq!(partial_read.read(&mut out).unwrap(), 7);
assert_eq!(&out[..7], b"Hello, ");
// The second read will fail with ErrorKind::Interrupted.
assert_eq!(partial_read.read(&mut out[7..]).unwrap_err().kind(), io::ErrorKind::Interrupted);
// The iterator has run out of operations, so it no longer truncates reads.
assert_eq!(partial_read.read(&mut out[7..]).unwrap(), 6);
assert_eq!(&out[..13], b"Hello, world!");

For a real-world example, see the tests in zstd-rs.

Minimum supported Rust version

The minimum supported Rust version (MSRV) is 1.56.

While a crate is pre-release status (0.x.x) it may have its MSRV bumped in a patch release. Once a crate has reached 1.x, any MSRV bump will be accompanied with a new minor version.

Contributing

See the CONTRIBUTING file for how to help out.

License

This project is available under the MIT license.

Comments
  • Bump libc from 0.2.134 to 0.2.138

    Bump libc from 0.2.134 to 0.2.138

    Bumps libc from 0.2.134 to 0.2.138.

    Release notes

    Sourced from libc's releases.

    0.2.138

    What's Changed

    New Contributors

    Full Changelog: https://github.com/rust-lang/libc/compare/0.2.137...0.2.138

    0.2.137

    ... (truncated)

    Commits
    • ce5afa7 Auto merge of #2994 - SteveLauC:libc-02138, r=JohnTitor
    • 9c311b4 Auto merge of #3024 - redox-os:redox-0.2.137, r=JohnTitor
    • 2eea873 Auto merge of #3021 - devnexen:getopt_long, r=JohnTitor
    • 73a70cb redox: make off_t and time_t long long
    • db3423b redox: long is 32-bits on 32-bit systems
    • 27cc898 adding getopt_long for unixes.
    • 15d2795 Auto merge of #3023 - asomers:copy_file_range, r=JohnTitor
    • 5756980 Enable copy_file_range on FreeBSD
    • d6fe782 Auto merge of #3022 - asomers:capsicum, r=JohnTitor
    • b8c8e13 Auto merge of #3003 - devnexen:musl_pidfd_nonblock, r=JohnTitor
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump syn from 1.0.100 to 1.0.105

    Bump syn from 1.0.100 to 1.0.105

    Bumps syn from 1.0.100 to 1.0.105.

    Release notes

    Sourced from syn's releases.

    1.0.105

    • Improve parse errors related to dyn and impl type syntax (#1245)

    1.0.104

    • Add PathArguments::is_none()

    1.0.103

    1.0.102

    • More efficient internal representation for TokenBuffer (#1223, thanks @​CAD97)
    • Fix parsing of a left shift after macro metavariable in type position (#1229)

    1.0.101

    • Eliminate a bunch of redundant work done by LitStr::parse (#1221)
    Commits
    • 998e863 Release 1.0.105
    • 02e2a21 Merge pull request #1247 from dtolnay/punctdrop
    • 9113ad0 Help infer may_dangle on type parameter of Punctuated iterator Drop impls
    • 3eaa443 Add regression test for issue 1246
    • 17f9a5c Merge pull request #1245 from dtolnay/bounds
    • db874dd Improve dyn/impl-related parse errors
    • b8b0761 Move TypeParamBound parse loop to associated function
    • 3e915e5 Clean up naming in rustc syntax tree manipulation
    • ecacc47 Import token::Lit now there's no conflict with MetaItemLit
    • 2647b2a Update test suite to nightly-2022-11-29
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump syn from 1.0.100 to 1.0.104

    Bump syn from 1.0.100 to 1.0.104

    Bumps syn from 1.0.100 to 1.0.104.

    Release notes

    Sourced from syn's releases.

    1.0.103

    1.0.102

    • More efficient internal representation for TokenBuffer (#1223, thanks @​CAD97)
    • Fix parsing of a left shift after macro metavariable in type position (#1229)

    1.0.101

    • Eliminate a bunch of redundant work done by LitStr::parse (#1221)
    Commits
    • 78fa618 Release 1.0.104
    • e054b03 Merge pull request #1244 from dtolnay/isnone
    • 3a0406d Make PathArguments::is_none() public
    • ac1dbf5 Time out workflows after 45 minutes
    • f510eb0 Update test suite to nightly-2022-11-25
    • 20087fc Update test suite to nightly-2022-11-24
    • dbc86fe Suppress "emit":"dep-info" json from syn-test-suite-feature-check
    • 1e82272 Fix renamed let_underscore_drop lint
    • 754236d Update test suite to nightly-2022-11-23
    • 4245c41 Update test suite to nightly-2022-11-19
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump libc from 0.2.134 to 0.2.137

    Bump libc from 0.2.134 to 0.2.137

    Bumps libc from 0.2.134 to 0.2.137.

    Release notes

    Sourced from libc's releases.

    0.2.137

    What's Changed

    Full Changelog: https://github.com/rust-lang/libc/compare/0.2.136...0.2.137

    0.2.136

    What's Changed

    Full Changelog: https://github.com/rust-lang/libc/compare/0.2.135...0.2.136

    0.2.135

    What's Changed

    ... (truncated)

    Commits
    • a90993e Auto merge of #2982 - JohnTitor:release-0.2.137, r=JohnTitor
    • 2cd24f5 Prepare 0.2.137 releaase
    • 7e8f84c Auto merge of #2979 - redox-os:redox-0.2.136, r=JohnTitor
    • a8b7b9c Auto merge of #2974 - SteveLauC:dirname-basename, r=JohnTitor
    • 3cdabff Auto merge of #2978 - devnexen:musl_emscripten_msg_constants, r=JohnTitor
    • 3ee203b Auto merge of #2980 - JohnTitor:ignore-res-init-macos, r=JohnTitor
    • 8081c99 Ignore res_init test on macOS
    • 4ba884a follow-up on #2963, changing MSG* constant types for musl/emscripten.
    • f9d1f3e Add MADV constants for Redox
    • 5ffdbc6 expose dirname and basename
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump libc from 0.2.134 to 0.2.136

    Bump libc from 0.2.134 to 0.2.136

    Bumps libc from 0.2.134 to 0.2.136.

    Release notes

    Sourced from libc's releases.

    0.2.136

    What's Changed

    Full Changelog: https://github.com/rust-lang/libc/compare/0.2.135...0.2.136

    0.2.135

    What's Changed

    New Contributors

    Full Changelog: https://github.com/rust-lang/libc/compare/0.2.134...0.2.135

    Commits
    • 09ad0b3 Auto merge of #2975 - JohnTitor:release-0.2.136, r=JohnTitor
    • 5e3c708 Prepare 0.2.136 release
    • 71b864d Auto merge of #2969 - pfmooney:illumos-aout, r=JohnTitor
    • cc19b6f Auto merge of #2973 - asomers:MNT_bsd, r=JohnTitor
    • 8acaac5 Add new definitions to libc-test/semver
    • a59c842 Auto merge of #2963 - devnexen:recvmsg_linux_fix, r=JohnTitor
    • cfa3116 Style fixes, and filter out duplicate definitions
    • 138202d Add more MNT_ flags on {Dragonfly,Net,Open}BSD
    • 00204b0 warns that in the near future the MSG_* constants will have
    • 0488a83 Auto merge of #2968 - name1e5s:macos_clocks, r=JohnTitor
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump syn from 1.0.100 to 1.0.103

    Bump syn from 1.0.100 to 1.0.103

    Bumps syn from 1.0.100 to 1.0.103.

    Release notes

    Sourced from syn's releases.

    1.0.103

    1.0.102

    • More efficient internal representation for TokenBuffer (#1223, thanks @​CAD97)
    • Fix parsing of a left shift after macro metavariable in type position (#1229)

    1.0.101

    • Eliminate a bunch of redundant work done by LitStr::parse (#1221)
    Commits
    • c29c2ab Release 1.0.103
    • 8e81cad Merge pull request #1237 from dtolnay/partialord
    • 8db5adb Ignore cast_possible_wrap pedantic clippy lint
    • f6f7d8a Restrict PartialOrd comparison to only tokens in the same buffer
    • 8dd9b01 Touch up PR 1236
    • 2b3f742 Merge pull request #1236 from CAD97/cursor-cmp
    • f6a43aa Handle the case where verbatim enters a None group
    • e9fb6a9 Implement PartialOrd for Cursor
    • 26a605e Add test for Item::Verbatim splitting a None group
    • a807b16 Update test suite to nightly-2022-10-13
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump proc-macro2 from 1.0.46 to 1.0.47

    Bump proc-macro2 from 1.0.46 to 1.0.47

    Bumps proc-macro2 from 1.0.46 to 1.0.47.

    Release notes

    Sourced from proc-macro2's releases.

    1.0.47

    • Fix integer overflow when nesting depth of nested comments exceeds 4 billion (#357)
    Commits
    • 47c91c8 Release 1.0.47
    • c694208 Make i's inferred type explicit to be consistent with depth
    • 46e9bd6 Merge pull request #358 from dtolnay/depth
    • 5635f1b Fix integer overflow in nested comment parser
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump unicode-ident from 1.0.4 to 1.0.5

    Bump unicode-ident from 1.0.4 to 1.0.5

    Bumps unicode-ident from 1.0.4 to 1.0.5.

    Release notes

    Sourced from unicode-ident's releases.

    1.0.5

    • Add keyword to crates.io metadata
    Commits
    • f72cdd4 Release 1.0.5
    • 1e397a7 Link to cast_possible_truncation false positive
    • fed8ff2 Ignore pedantic clippy in ucd-generate generated code
    • 672c8b5 Resolve redundant_closure_for_method_calls pedantic clippy lint
    • 5465e7b Merge pull request #17 from dtolnay/clippy
    • 35ccb3f Run clippy on all crates in workspace
    • 38acd92 Merge pull request #16 from dtolnay/write
    • 9150ce2 Pull out static generated file heading into one string literal
    • a040895 Merge pull request #15 from dtolnay/write
    • 3396343 Move Output writing to separate module
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump libc from 0.2.134 to 0.2.135

    Bump libc from 0.2.134 to 0.2.135

    Bumps libc from 0.2.134 to 0.2.135.

    Release notes

    Sourced from libc's releases.

    0.2.135

    What's Changed

    New Contributors

    Full Changelog: https://github.com/rust-lang/libc/compare/0.2.134...0.2.135

    Commits
    • 88b2ed2 Auto merge of #2951 - MrCroxx:xx/bump-to-135, r=JohnTitor
    • 49c5419 Auto merge of #2954 - JohnTitor:ignore-i686-android, r=JohnTitor
    • 424a589 Ignore Android targets on bors
    • fe4f6d7 Auto merge of #2952 - SteveLauC:eaccess-on-freebsd-and-dragonfly, r=JohnTitor
    • 0f5ee7a Auto merge of #2953 - SteveLauC:faccessat-on-illumos-and-solaris, r=JohnTitor
    • aa915ee add faccessat on illumos/solaris and euidaccess on solaris
    • a36515f add eaccess on freebsd and dragonfly
    • 598b82f bump to 0.2.135
    • 8dcd556 Auto merge of #2941 - SteveLauC:statx-constants-on-gnu-linux, r=JohnTitor
    • f064e97 Auto merge of #2949 - MrCroxx:xx/android-xfs-super-magic, r=JohnTitor
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump syn from 1.0.100 to 1.0.102

    Bump syn from 1.0.100 to 1.0.102

    Bumps syn from 1.0.100 to 1.0.102.

    Release notes

    Sourced from syn's releases.

    1.0.102

    • More efficient internal representation for TokenBuffer (#1223, thanks @​CAD97)
    • Fix parsing of a left shift after macro metavariable in type position (#1229)

    1.0.101

    • Eliminate a bunch of redundant work done by LitStr::parse (#1221)
    Commits
    • e4127c7 Release 1.0.102
    • 691fc06 Merge pull request #1230 from dtolnay/groupgeneric
    • 61ece4c Fix left shift after macro metavariable in type position
    • 7909596 Rename TokenBuffer's recursive construction logic
    • f169b98 Delete TokenBuffer's empty Drop impl
    • 65ee83a Simplify Cursor::lifetime using a question mark
    • 502968c Implement skip and token_tree using the 'len' of entries being stepped over
    • f895b8a Inline some of the logic for entering a Group
    • 71260de Touch up PR 1223
    • 296e046 Merge pull request #1226 from dtolnay/bom
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump syn from 1.0.100 to 1.0.101

    Bump syn from 1.0.100 to 1.0.101

    Bumps syn from 1.0.100 to 1.0.101.

    Release notes

    Sourced from syn's releases.

    1.0.101

    • Eliminate a bunch of redundant work done by LitStr::parse (#1221)
    Commits
    • 96beb3b Release 1.0.101
    • 8f0368e Merge pull request #1221 from dtolnay/litparse
    • ea637b2 Bypass a round trip through ParseBuffer in LitStr::parse
    • 638e967 Merge pull request #1220 from dtolnay/rustdoclink
    • 620852b Link to parse module using an intra rustdoc link
    • c1d6739 Revert "Work around rustdoc ambiguity bug"
    • 3c49303 Combine tests gitignore into single top level gitignore
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump libc from 0.2.134 to 0.2.139

    Bump libc from 0.2.134 to 0.2.139

    Bumps libc from 0.2.134 to 0.2.139.

    Release notes

    Sourced from libc's releases.

    0.2.139

    What's Changed

    New Contributors

    Full Changelog: https://github.com/rust-lang/libc/compare/0.2.138...0.2.139

    0.2.138

    What's Changed

    ... (truncated)

    Commits
    • f4bc851 Auto merge of #3042 - flba-eb:release_0.2.139, r=JohnTitor
    • dc3d43c Prepare 0.2.139 release
    • c59ca73 Auto merge of #3041 - devnexen:linux_kernel_version, r=JohnTitor
    • 88d6a1f adding KERNEL_VERSION macro for linux.
    • 45b431a Auto merge of #2758 - fkm3:master, r=JohnTitor
    • 572e11b Add misc constants and functions for android
    • 318dccc Auto merge of #3038 - gh-tr:rebased/20221216, r=JohnTitor
    • 07636f6 Auto merge of #3036 - LegionMammal978:iso-c-funcs, r=JohnTitor
    • 720151f Add support for QNX/Neutrino 7.1
    • 6a58758 Add ISO C functions atof, atol, atoll, strtoll, strtoull
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump syn from 1.0.100 to 1.0.107

    Bump syn from 1.0.100 to 1.0.107

    Bumps syn from 1.0.100 to 1.0.107.

    Release notes

    Sourced from syn's releases.

    1.0.106

    • Documentation improvements

    1.0.105

    • Improve parse errors related to dyn and impl type syntax (#1245)

    1.0.104

    • Add PathArguments::is_none()

    1.0.103

    1.0.102

    • More efficient internal representation for TokenBuffer (#1223, thanks @​CAD97)
    • Fix parsing of a left shift after macro metavariable in type position (#1229)

    1.0.101

    • Eliminate a bunch of redundant work done by LitStr::parse (#1221)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump proc-macro2 from 1.0.46 to 1.0.49

    Bump proc-macro2 from 1.0.46 to 1.0.49

    Bumps proc-macro2 from 1.0.46 to 1.0.49.

    Release notes

    Sourced from proc-macro2's releases.

    1.0.48

    • Documentation improvements

    1.0.47

    • Fix integer overflow when nesting depth of nested comments exceeds 4 billion (#357)
    Commits
    • 293705d Release 1.0.49
    • 6b9ee3d Opt out -Zrustdoc-scrape-examples on docs.rs
    • a83ad60 Release 1.0.48
    • b4fa77f Update build status badge
    • 975c324 Time out workflows after 45 minutes
    • f633e31 MIT copyright line
    • 47c91c8 Release 1.0.47
    • c694208 Make i's inferred type explicit to be consistent with depth
    • 46e9bd6 Merge pull request #358 from dtolnay/depth
    • 5635f1b Fix integer overflow in nested comment parser
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump unicode-ident from 1.0.4 to 1.0.6

    Bump unicode-ident from 1.0.4 to 1.0.6

    Bumps unicode-ident from 1.0.4 to 1.0.6.

    Release notes

    Sourced from unicode-ident's releases.

    1.0.6

    • Documentation improvements

    1.0.5

    • Add keyword to crates.io metadata
    Commits
    • 25ba0d2 Release 1.0.6
    • c740d92 Update build status badge
    • 30361cf Time out workflows after 45 minutes
    • 94296cf Add a funding file
    • a6337ab Fix renamed let_underscore_drop lint
    • 9c11676 Resolve manual_let_else clippy lints
    • 726d043 Minimalist error handling by exiting on error
    • 632e122 Merge pull request #21 from dtolnay/parse
    • 34c0dd1 Replace ucd-parse dependency
    • 5d1a139 Merge pull request #20 from dtolnay/ucdparse
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump futures-channel from 0.3.24 to 0.3.25

    Bump futures-channel from 0.3.24 to 0.3.25

    Bumps futures-channel from 0.3.24 to 0.3.25.

    Release notes

    Sourced from futures-channel's releases.

    0.3.25

    • Fix soundness issue in join! and try_join! macros (#2649)
    • Implement Clone for sink::Drain (#2650)
    Changelog

    Sourced from futures-channel's changelog.

    0.3.25 - 2022-10-20

    • Fix soundness issue in join! and try_join! macros (#2649)
    • Implement Clone for sink::Drain (#2650)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(0.5.4)
Owner
null
A library providing helpers for various StarkNet fees related tasks.

?? How Much ? ?? Table of Contents About Getting Started Prerequisites Installation Usage Estimate fees on network Authors & contributors Security Lic

Abdel @ StarkWare 4 Dec 15, 2022
A simple Rust library for OpenAI API, free from complex async operations and redundant dependencies.

OpenAI API for Rust A community-maintained library provides a simple and convenient way to interact with the OpenAI API. No complex async and redundan

null 6 Apr 4, 2023
A cli prepared with TUI that facilitates your operations.

⚠️ For linux only ⚠️ Helper CLI A cli prepared with TUI that facilitates your operations. Click me to learn more about the theme system. If you just w

Yiğit 4 Feb 1, 2022
A collection of tools for i3 that assist in window, workspace and output operations.

i3-valet A collection of tools for i3 that assist in window, workspace and output operations. i3-valet can be run directly from the command line or as

Erich Heine 15 Jan 8, 2023
NodeCraft - Crafting seamless node operations for distributed systems

NodeCraft Crafting seamless node operations for distributed systems, which provides foundational traits for node identification and address resolution

Al Liu 3 Oct 9, 2023
This library provides a convenient derive macro for the standard library's std::error::Error trait.

derive(Error) This library provides a convenient derive macro for the standard library's std::error::Error trait. [dependencies] therror = "1.0" Compi

Sebastian Thiel 5 Oct 23, 2023
A library and binary for testing unhooking ntdll by identifying hooks via in-memory disassembly

(First Public?) Sample of unhooking ntdll (All Exports & IAT imports) hooks in Rust using in-memory disassembly, avoiding direct syscalls and all hooked functions (incl. hooked NtProtectVirtualMemory)

Signal Labs 52 Apr 9, 2023
Irx-config - The library provides convenient way to represent/parse configuration from different sources

The irx-config library provides convenient way to represent/parse configuration from different sources. The main goals is to be very easy to use and t

Andriy Bakay 2 Sep 14, 2022
Sysexits-rs (sysexits) is a library that provides the system exit code constants

sysexits-rs sysexits-rs (sysexits) is a library that provides the system exit code constants as defined by <sysexits.h>. This library implements the T

Shun Sakai 7 Dec 15, 2022
Crates.io library that provides high-level APIs for obtaining information on various entertainment media such as books, movies, comic books, anime, manga, and so on.

Crates.io library that provides high-level APIs for obtaining information on various entertainment media such as books, movies, comic books, anime, manga, and so on.

consumet-rs 5 Aug 13, 2023
A simple program for C program IO testing. Written in Rust

A simple program for C program IO testing. Written in Rust, using concurrency to speed up valgrind testing. Make sure to update settings at your first run of the program!

null 1 Feb 22, 2022
Cucumber testing framework for Rust. Fully native, no external test runners or dependencies.

Cucumber testing framework for Rust An implementation of the Cucumber testing framework for Rust. Fully native, no external test runners or dependenci

Cucumber Rust 393 Dec 31, 2022
Testing out if Rust can be used for a normal Data Engineering Pipeline.

RustForDataPipelines Testing out if Rust can be used for a normal Data Engineering Pipeline. Check out the full blog post here. https://www.confession

Daniel B 7 Feb 17, 2023
botwork is a single-binary, generic and open-source automation framework written in Rust for acceptance testing & RPA

botwork botwork is a single-binary, generic and open-source automation framework written in Rust for acceptance testing, acceptance test driven develo

Nitimis 8 Apr 17, 2023
Api testing tool made with rust to use for api developement (Kind of Tui)

Api testing tool made with rust to use for api developement (Kind of Tui) This Rust project provides a simple yet powerful tool for making HTTP reques

Kythonlk 3 Feb 14, 2024
A dead simple functional testing tool for command line applications

Pharaoh : build that test pyramid! What it is Pharaoh is a dead simple, no permission needed, functional test runner for command line applications, wr

Kevin Sztern 17 Dec 13, 2021
Snapshot testing for a herd of CLI tests

trycmd Snapshot testing for a herd of CLI tests trycmd aims to simplify the process for running a large collection of end-to-end CLI test cases, takin

null 57 Jan 3, 2023
Croc-look is a tool to make testing and debuging proc macros easier

croc-look croc-look is a tool to make testing and debuging proc macros easier by these two features Printing the implementation specific generated cod

weegee 7 Dec 2, 2022
A workflow tool for quickly running / testing something you are working on

runfast What is it? This is a program intended to be run in a project directory to set up a project run command, and remember it so we dont have to ty

anna 4 Dec 16, 2022