From f774073c45d1dab38762ac6b4cdb7000f5046c2c Mon Sep 17 00:00:00 2001 From: Matthew James Briggs Date: Thu, 5 Oct 2023 16:44:51 -0700 Subject: [PATCH 1/3] edit changelog for v0.0.5 --- CHANGELOG.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0916a3..13d0da4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,18 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [v0.0.4] 2022-06-12 +## [v0.0.5] 2023-10-05 +## Added +- Add support for reading pitch bend events. [#20] + +## Changed +- Refactored and maybe fixed the writing of pitch bend events. [#20] + +[#14]: https://github.com/webern/midi_file/issues/14 + +## [v0.0.4] 2023-06-12 ## Changed -- Add support for pitch bend events. Thank you, @robrennie [#15] +- Add support for writing pitch bend events. Thank you, @robrennie [#15] [#15]: https://github.com/webern/midi_file/issues/15 @@ -36,7 +45,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Everything: you can create simple MIDI files with this library. -[Unreleased]: https://github.com/webern/midi_file/compare/v0.0.4...HEAD +[Unreleased]: https://github.com/webern/midi_file/compare/v0.0.5...HEAD +[v0.0.5]: https://github.com/webern/midi_file/compare/v0.0.4...v0.0.5 [v0.0.4]: https://github.com/webern/midi_file/compare/v0.0.3...v0.0.4 [v0.0.3]: https://github.com/webern/midi_file/compare/v0.0.2...v0.0.3 [v0.0.2]: https://github.com/webern/midi_file/compare/v0.0.1...v0.0.2 From 15c791d4a03c635af7dab4a3e0da67f7dab46a47 Mon Sep 17 00:00:00 2001 From: Matthew James Briggs Date: Thu, 5 Oct 2023 16:54:20 -0700 Subject: [PATCH 2/3] update dependencies --- Cargo.lock | 460 ++++++++++++++++++++++++++------------ Cargo.toml | 4 +- src/byte_iter.rs | 32 +-- src/core/duration_name.rs | 2 +- src/core/message.rs | 4 +- src/error.rs | 14 +- src/file/division.rs | 4 +- src/file/header.rs | 2 +- src/file/meta_event.rs | 9 +- src/file/track.rs | 2 +- src/lib.rs | 36 ++- 11 files changed, 375 insertions(+), 194 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cbe524b..2ece226 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,35 +4,60 @@ version = 3 [[package]] name = "aho-corasick" -version = "0.7.15" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" dependencies = [ "memchr", ] [[package]] -name = "atty" -version = "0.2.14" +name = "android-tzdata" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "hermit-abi", "libc", - "winapi", ] [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] -name = "cfg-if" -version = "0.1.10" +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -42,17 +67,24 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ - "libc", - "num-integer", + "android-tzdata", + "iana-time-zone", + "js-sys", "num-traits", - "time", - "winapi", + "wasm-bindgen", + "windows-targets", ] +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + [[package]] name = "doc-comment" version = "0.3.3" @@ -61,203 +93,229 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "env_logger" -version = "0.8.2" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26ecb66b4bdca6c1409b40fb255eefc2bd4f6d135dab3c3124f80ffa2a9661e" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" dependencies = [ - "atty", "humantime", + "is-terminal", "log", "regex", "termcolor", ] [[package]] -name = "getrandom" -version = "0.1.16" +name = "errno" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" dependencies = [ - "cfg-if 1.0.0", + "errno-dragonfly", "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "windows-sys", ] [[package]] -name = "hermit-abi" -version = "0.1.17" +name = "errno-dragonfly" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" dependencies = [ + "cc", "libc", ] [[package]] -name = "humantime" +name = "fastrand" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c1ad908cc71012b7bea4d0c53ba96a8cba9962f048fa68d143376143d863b7a" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] -name = "lazy_static" -version = "1.4.0" +name = "heck" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] -name = "libc" -version = "0.2.81" +name = "hermit-abi" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] -name = "log" -version = "0.4.11" +name = "humantime" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" -dependencies = [ - "cfg-if 0.1.10", -] +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] -name = "memchr" -version = "2.3.4" +name = "iana-time-zone" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] [[package]] -name = "midi_file" -version = "0.0.4" +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "chrono", - "env_logger", - "log", - "snafu", - "tempfile", + "cc", ] [[package]] -name = "num-integer" -version = "0.1.44" +name = "is-terminal" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "autocfg", - "num-traits", + "hermit-abi", + "rustix", + "windows-sys", ] [[package]] -name = "num-traits" -version = "0.2.14" +name = "js-sys" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ - "autocfg", + "wasm-bindgen", ] [[package]] -name = "ppv-lite86" -version = "0.2.10" +name = "libc" +version = "0.2.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" [[package]] -name = "proc-macro2" -version = "1.0.24" +name = "linux-raw-sys" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" -dependencies = [ - "unicode-xid", -] +checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db" [[package]] -name = "quote" -version = "1.0.8" +name = "log" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" -dependencies = [ - "proc-macro2", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] -name = "rand" -version = "0.7.3" +name = "memchr" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "midi_file" +version = "0.0.4" dependencies = [ - "getrandom", - "libc", - "rand_chacha", - "rand_core", - "rand_hc", + "chrono", + "env_logger", + "log", + "snafu", + "tempfile", ] [[package]] -name = "rand_chacha" -version = "0.2.2" +name = "num-traits" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ - "ppv-lite86", - "rand_core", + "autocfg", ] [[package]] -name = "rand_core" -version = "0.5.1" +name = "once_cell" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "proc-macro2" +version = "1.0.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ - "getrandom", + "unicode-ident", ] [[package]] -name = "rand_hc" -version = "0.2.0" +name = "quote" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ - "rand_core", + "proc-macro2", ] [[package]] name = "redox_syscall" -version = "0.1.57" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] [[package]] name = "regex" -version = "1.4.2" +version = "1.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" +checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" dependencies = [ "aho-corasick", "memchr", "regex-syntax", - "thread_local", ] [[package]] name = "regex-syntax" -version = "0.6.21" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] -name = "remove_dir_all" -version = "0.5.3" +name = "rustix" +version = "0.38.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +checksum = "f25469e9ae0f3d0047ca8b93fc56843f38e6774f0914a107ff8b41be8be8e0b7" dependencies = [ - "winapi", + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", ] [[package]] name = "snafu" -version = "0.6.10" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab12d3c261b2308b0d80c26fffb58d17eba81a4be97890101f416b478c79ca7" +checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6" dependencies = [ "doc-comment", "snafu-derive", @@ -265,86 +323,119 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.6.10" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1508efa03c362e23817f96cde18abed596a25219a8b2c66e8db33c03543d315b" +checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf" dependencies = [ + "heck", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "syn" -version = "1.0.56" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9802ddde94170d186eeee5005b798d9c159fa970403f1be19976d0cfb939b72" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] name = "tempfile" -version = "3.1.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ - "cfg-if 0.1.10", - "libc", - "rand", + "cfg-if", + "fastrand", "redox_syscall", - "remove_dir_all", - "winapi", + "rustix", + "windows-sys", ] [[package]] name = "termcolor" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] [[package]] -name = "thread_local" -version = "1.0.1" +name = "unicode-ident" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ - "lazy_static", + "cfg-if", + "wasm-bindgen-macro", ] [[package]] -name = "time" -version = "0.1.44" +name = "wasm-bindgen-backend" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.38", + "wasm-bindgen-shared", ] [[package]] -name = "unicode-xid" -version = "0.2.1" +name = "wasm-bindgen-macro" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] [[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" +name = "wasm-bindgen-macro-support" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] [[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" +name = "wasm-bindgen-shared" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "winapi" @@ -364,9 +455,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -376,3 +467,78 @@ name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" diff --git a/Cargo.toml b/Cargo.toml index a00c348..cf5a561 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,9 +20,9 @@ categories = ["encoding"] [dependencies] log = "0.4" -snafu = "0.6" +snafu = "0.7" [dev-dependencies] chrono = "0.4" -env_logger = "0.8" +env_logger = "0.10" tempfile = "3" diff --git a/src/byte_iter.rs b/src/byte_iter.rs index aaaf325..42f93d5 100644 --- a/src/byte_iter.rs +++ b/src/byte_iter.rs @@ -88,7 +88,7 @@ const MB: usize = KB * 1024; impl ByteIter> { pub(crate) fn new_file>(path: P) -> ByteResult { let path = path.as_ref(); - let f = File::open(path).context(FileOpen { path })?; + let f = File::open(path).context(FileOpenSnafu { path })?; let buf = BufReader::with_capacity(MB, f); Self::new(buf.bytes()) } @@ -118,7 +118,7 @@ impl ByteIter { Some(result) => match result { Ok(val) => Ok(Some(val)), Err(ref e) if e.kind() == ErrorKind::UnexpectedEof => Ok(None), - Err(e) => Err(e).context(Io { position }), + Err(e) => Err(e).context(IoSnafu { position }), }, } } @@ -178,23 +178,23 @@ impl ByteIter { e } }; - Err(e).context(Io { + Err(e).context(IoSnafu { position: self.position.unwrap_or(0), }) } pub(crate) fn read_or_die(&mut self) -> ByteResult { - self.read()?.context(End { + self.read()?.context(EndSnafu { position: self.position.unwrap_or(0), }) } pub(crate) fn read2(&mut self) -> ByteResult<[u8; 2]> { let mut retval = [0u8; 2]; - retval[0] = self.read()?.context(End { + retval[0] = self.read()?.context(EndSnafu { position: self.position.unwrap_or(0), })?; - retval[1] = self.read()?.context(End { + retval[1] = self.read()?.context(EndSnafu { position: self.position.unwrap_or(0), })?; Ok(retval) @@ -202,16 +202,16 @@ impl ByteIter { pub(crate) fn read4(&mut self) -> ByteResult<[u8; 4]> { let mut retval = [0u8; 4]; - retval[0] = self.read()?.context(End { + retval[0] = self.read()?.context(EndSnafu { position: self.position.unwrap_or(0), })?; - retval[1] = self.read()?.context(End { + retval[1] = self.read()?.context(EndSnafu { position: self.position.unwrap_or(0), })?; - retval[2] = self.read()?.context(End { + retval[2] = self.read()?.context(EndSnafu { position: self.position.unwrap_or(0), })?; - retval[3] = self.read()?.context(End { + retval[3] = self.read()?.context(EndSnafu { position: self.position.unwrap_or(0), })?; Ok(retval) @@ -235,7 +235,7 @@ impl ByteIter { while current_byte & CONTINUE == CONTINUE { ensure!( byte_count <= 4, - VlqTooBig { + VlqTooBigSnafu { position: self.position.unwrap_or(0) } ); @@ -248,7 +248,7 @@ impl ByteIter { pub(crate) fn read_vlq_u32(&mut self) -> ByteResult { let bytes = self.read_vlq_bytes()?; - let decoded = decode_slice(&bytes).context(VlqDecode { + let decoded = decode_slice(&bytes).context(VlqDecodeSnafu { position: self.position.unwrap_or(0), })?; trace!("decoded vlq value {} from {} bytes", decoded, bytes.len()); @@ -260,7 +260,7 @@ impl ByteIter { } pub(crate) fn peek_or_die(&self) -> ByteResult { - self.peek1.context(End { + self.peek1.context(EndSnafu { position: self.position.unwrap_or(0), }) } @@ -278,12 +278,12 @@ impl ByteIter { pub(crate) fn expect_tag(&mut self, expected_tag: &str) -> ByteResult<()> { let tag_bytes = self.read4()?; - let actual_tag = from_utf8(&tag_bytes).context(Str { + let actual_tag = from_utf8(&tag_bytes).context(StrSnafu { position: self.position.unwrap_or(0), })?; ensure!( expected_tag == actual_tag, - Tag { + TagSnafu { expected: expected_tag, found: actual_tag, position: self.position.unwrap_or(0) @@ -306,7 +306,7 @@ impl ByteIter { let found = self.read_or_die()?; ensure!( expected == found, - ReadExpect { + ReadExpectSnafu { expected, found, position: self.position.unwrap_or(0) diff --git a/src/core/duration_name.rs b/src/core/duration_name.rs index ee28c5a..a5f3a00 100644 --- a/src/core/duration_name.rs +++ b/src/core/duration_name.rs @@ -60,7 +60,7 @@ impl DurationName { v if DurationName::D256 as u8 == v => Ok(DurationName::D256), v if DurationName::D512 as u8 == v => Ok(DurationName::D512), v if DurationName::D1024 as u8 == v => Ok(DurationName::D1024), - _ => crate::error::Other { site: site!() }.fail(), + _ => crate::error::OtherSnafu { site: site!() }.fail(), } } } diff --git a/src/core/message.rs b/src/core/message.rs index de309fc..41de608 100644 --- a/src/core/message.rs +++ b/src/core/message.rs @@ -290,7 +290,7 @@ impl Message { iter.set_running_status_detected(); let running_status = iter .latest_message_byte() - .context(error::RunningStatus { site: site!() })?; + .context(error::RunningStatusSnafu { site: site!() })?; trace!("running status byte {:#x}", running_status); running_status } else { @@ -781,7 +781,7 @@ impl Control { x if x == Control::Undefined117 as u8 => Ok(Control::Undefined117), x if x == Control::Undefined118 as u8 => Ok(Control::Undefined118), x if x == Control::Undefined119 as u8 => Ok(Control::Undefined119), - _ => error::Other { site: site!() }.fail(), + _ => error::OtherSnafu { site: site!() }.fail(), } } } diff --git a/src/error.rs b/src/error.rs index 0f5993d..3d0a2db 100644 --- a/src/error.rs +++ b/src/error.rs @@ -16,7 +16,7 @@ pub(crate) type LibResult = std::result::Result; /// The internal Error type for this library. #[derive(Debug, Snafu)] -#[snafu(visibility = "pub(crate)")] +#[snafu(visibility(pub(crate)))] pub(crate) enum LibError { #[snafu(display("{} Error creating file '{}': {}", site, path.display(), source))] Create { @@ -82,31 +82,31 @@ macro_rules! site { macro_rules! io { () => { - crate::error::Read { site: site!() } + crate::error::ReadSnafu { site: site!() } }; } macro_rules! wr { () => { - crate::error::Write { site: site!() } + crate::error::WriteSnafu { site: site!() } }; } macro_rules! invalid_file_s { () => { - crate::error::InvalidFile { + crate::error::InvalidFileSnafu { site: site!(), description: "[no description]", } }; ($msg:expr) => { - crate::error::InvalidFile { + crate::error::InvalidFileSnafu { site: site!(), description: $msg, } }; ($fmt:expr, $($arg:expr),+) => { - crate::error::InvalidFile { + crate::error::InvalidFileSnafu { site: site!(), description: format!($fmt, $($arg),+), } @@ -151,7 +151,7 @@ macro_rules! invalid_file { macro_rules! noimpl { ($name:expr) => { - return crate::error::Unimplemented { + return crate::error::UnimplementedSnafu { site: site!(), feature: $name.to_string(), } diff --git a/src/file/division.rs b/src/file/division.rs index 489289c..dc23329 100644 --- a/src/file/division.rs +++ b/src/file/division.rs @@ -41,7 +41,7 @@ impl Division { pub(crate) fn from_u16(value: u16) -> LibResult { if value & DIVISION_TYPE_BIT == DIVISION_TYPE_BIT { // TODO - implement SMPTE division - crate::error::Other { site: site!() }.fail() + crate::error::OtherSnafu { site: site!() }.fail() } else { Ok(Division::QuarterNote(QuarterNoteDivision::new(value))) } @@ -50,7 +50,7 @@ impl Division { pub(crate) fn write(&self, w: &mut Scribe) -> LibResult<()> { match self { Division::QuarterNote(q) => Ok(w.write_all(&q.get().to_be_bytes()).context(wr!())?), - Division::Smpte(_) => crate::error::Other { site: site!() }.fail(), + Division::Smpte(_) => crate::error::OtherSnafu { site: site!() }.fail(), } } } diff --git a/src/file/header.rs b/src/file/header.rs index acbb025..fcfa365 100644 --- a/src/file/header.rs +++ b/src/file/header.rs @@ -65,7 +65,7 @@ impl Format { 0 => Ok(Format::Single), 1 => Ok(Format::Multi), 2 => Ok(Format::Sequential), - _ => crate::error::Other { site: site!() }.fail(), + _ => crate::error::OtherSnafu { site: site!() }.fail(), } } } diff --git a/src/file/meta_event.rs b/src/file/meta_event.rs index 69d968d..afd1d1e 100644 --- a/src/file/meta_event.rs +++ b/src/file/meta_event.rs @@ -240,7 +240,9 @@ impl MetaEvent { pub(crate) fn parse_text(iter: &mut ByteIter) -> LibResult { // we should be on a type-byte with a value between 0x01 and 0x09 (the text range). - let text_type = iter.current().context(error::Other { site: site!() })?; + let text_type = iter + .current() + .context(error::OtherSnafu { site: site!() })?; let length = iter.read_vlq_u32().context(io!())?; let bytes = iter.read_n(length as usize).context(io!())?; // the spec does not strictly specify what encoding should be used for strings @@ -263,7 +265,8 @@ impl MetaEvent { fn write_text(w: &mut Scribe, text_type: u8, text: &Text) -> LibResult<()> { w.write_all(&text_type.to_be_bytes()).context(wr!())?; let bytes = text.as_bytes(); - let size_u32 = u32::try_from(bytes.len()).context(error::StringTooLong { site: site!() })?; + let size_u32 = + u32::try_from(bytes.len()).context(error::StringTooLongSnafu { site: site!() })?; let size = Vlq::new(size_u32).to_bytes(); w.write_all(&size).context(wr!())?; w.write_all(bytes).context(wr!())?; @@ -365,7 +368,7 @@ pub struct TimeSignatureValue { impl TimeSignatureValue { /// Create a new `TimeSignatureValue` object. pub fn new(numerator: u8, denominator: DurationName, click: Clocks) -> Result { - ensure!(numerator > 0, error::Other { site: site!() }); + ensure!(numerator > 0, error::OtherSnafu { site: site!() }); Ok(Self { numerator, denominator, diff --git a/src/file/track.rs b/src/file/track.rs index c0f076e..b8515a9 100644 --- a/src/file/track.rs +++ b/src/file/track.rs @@ -247,7 +247,7 @@ impl Track { // write the length of the track let track_length = u32::try_from(track_data.len()) - .context(crate::error::TrackTooLong { site: site!() })?; + .context(crate::error::TrackTooLongSnafu { site: site!() })?; w.write_all(&track_length.to_be_bytes()).context(wr!())?; // write the track data diff --git a/src/lib.rs b/src/lib.rs index 8a2bb75..c4b3286 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -151,8 +151,8 @@ impl MidiFile { /// Write a `MidiFile` to bytes. pub fn write(&self, w: &mut W) -> Result<()> { - let ntracks = - u16::try_from(self.tracks.len()).context(error::TooManyTracks { site: site!() })?; + let ntracks = u16::try_from(self.tracks.len()) + .context(error::TooManyTracksSnafu { site: site!() })?; let mut scribe = Scribe::new( w, ScribeSettings { @@ -169,7 +169,7 @@ impl MidiFile { /// Save a `MidiFile` to a file path. pub fn save>(&self, path: P) -> Result<()> { let path = path.as_ref(); - let file = File::create(path).context(error::Create { + let file = File::create(path).context(error::CreateSnafu { site: site!(), path, })?; @@ -202,30 +202,42 @@ impl MidiFile { } pub fn push_track(&mut self, track: Track) -> Result<()> { - ensure!(self.tracks_len() < u32::MAX, error::Other { site: site!() }); + ensure!( + self.tracks_len() < u32::MAX, + error::OtherSnafu { site: site!() } + ); if *self.header().format() == Format::Single { - ensure!(self.tracks_len() <= 1, error::Other { site: site!() }); + ensure!(self.tracks_len() <= 1, error::OtherSnafu { site: site!() }); } self.tracks.push(ensure_end_of_track(track)?); Ok(()) } pub fn insert_track(&mut self, index: u32, track: Track) -> Result<()> { - ensure!(self.tracks_len() < u32::MAX, error::Other { site: site!() }); + ensure!( + self.tracks_len() < u32::MAX, + error::OtherSnafu { site: site!() } + ); if *self.header().format() == Format::Single { - ensure!(self.tracks_len() <= 1, error::Other { site: site!() }); + ensure!(self.tracks_len() <= 1, error::OtherSnafu { site: site!() }); } - ensure!(index < self.tracks_len(), error::Other { site: site!() }); + ensure!( + index < self.tracks_len(), + error::OtherSnafu { site: site!() } + ); self.tracks.insert( - usize::try_from(index).context(error::TooManyTracks { site: site!() })?, + usize::try_from(index).context(error::TooManyTracksSnafu { site: site!() })?, ensure_end_of_track(track)?, ); Ok(()) } pub fn remove_track(&mut self, index: u32) -> Result { - ensure!(index < self.tracks_len(), error::Other { site: site!() }); - let i = usize::try_from(index).context(error::TooManyTracks { site: site!() })?; + ensure!( + index < self.tracks_len(), + error::OtherSnafu { site: site!() } + ); + let i = usize::try_from(index).context(error::TooManyTracksSnafu { site: site!() })?; Ok(self.tracks.remove(i)) } @@ -235,7 +247,7 @@ impl MidiFile { let chunk_length = iter.read_u32().context(io!())?; // header chunk length is always 6 if chunk_length != 6 { - return error::Other { site: site!() }.fail(); + return error::OtherSnafu { site: site!() }.fail(); } let format_word = iter.read_u16().context(io!())?; let num_tracks = iter.read_u16().context(io!())?; From 1442c28bbdc36845c7ded69ee2fd17be0735444a Mon Sep 17 00:00:00 2001 From: Matthew James Briggs Date: Thu, 5 Oct 2023 16:55:05 -0700 Subject: [PATCH 3/3] bump version to v0.0.5 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2ece226..cce9766 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -218,7 +218,7 @@ checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "midi_file" -version = "0.0.4" +version = "0.0.5" dependencies = [ "chrono", "env_logger", diff --git a/Cargo.toml b/Cargo.toml index cf5a561..33090e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "midi_file" -version = "0.0.4" +version = "0.0.5" authors = ["Matthew James Briggs "] edition = "2018" exclude = [