anki/rslib
RumovZ c521753057
Refactor error handling (#2136)
* Add crate snafu

* Replace all inline structs in AnkiError

* Derive Snafu on AnkiError

* Use snafu for card type errors

* Use snafu whatever error for InvalidInput

* Use snafu for NotFoundError and improve message

* Use snafu for FileIoError to attach context

Remove IoError.
Add some context-attaching helpers to replace code returning bare
io::Errors.

* Add more context-attaching io helpers

* Add message, context and backtrace to new snafus

* Utilize error context and backtrace on frontend

* Rename LocalizedError -> BackendError.
* Remove DocumentedError.
* Have all backend exceptions inherit BackendError.

* Rename localized(_description) -> message

* Remove accidentally committed experimental trait

* invalid_input_context -> ok_or_invalid

* ensure_valid_input! -> require!

* Always return `Err` from `invalid_input!`

Instead of a Result to unwrap, the macro accepts a source error now.

* new_tempfile_in_parent -> new_tempfile_in_parent_of

* ok_or_not_found -> or_not_found

* ok_or_invalid -> or_invalid

* Add crate convert_case

* Use unqualified lowercase type name

* Remove uses of snafu::ensure

* Allow public construction of InvalidInputErrors (dae)

Needed to port the AnkiDroid changes.

* Make into_protobuf() public (dae)

Also required for AnkiDroid. Not sure why it worked previously - possible
bug in older Rust version?
2022-10-21 18:02:12 +10:00
..
.cargo initial Bazel conversion 2020-11-01 14:26:58 +10:00
benches New TTS/AV tag handling (#1559) 2021-12-17 19:04:42 +10:00
build Refactor error handling (#2136) 2022-10-21 18:02:12 +10:00
cargo Refactor error handling (#2136) 2022-10-21 18:02:12 +10:00
i18n Refactor error handling (#2136) 2022-10-21 18:02:12 +10:00
i18n_helpers Refactor error handling (#2136) 2022-10-21 18:02:12 +10:00
linkchecker Refactor error handling (#2136) 2022-10-21 18:02:12 +10:00
src Refactor error handling (#2136) 2022-10-21 18:02:12 +10:00
tests/support move linkchecker into separate crate 2021-12-20 17:27:43 +10:00
.gitignore initial Bazel conversion 2020-11-01 14:26:58 +10:00
bench.sh New TTS/AV tag handling (#1559) 2021-12-17 19:04:42 +10:00
BUILD.bazel Refactor error handling (#2136) 2022-10-21 18:02:12 +10:00
Cargo.toml Refactor error handling (#2136) 2022-10-21 18:02:12 +10:00
empty.rs Backend Custom Study (#1600) 2022-01-20 14:25:22 +10:00
README.md add some code editing/completion docs 2020-12-16 14:16:08 +10:00
rustfmt.bzl Update to latest rules_rust, which unblocks the tokio upgrade 2022-03-03 19:48:17 +10:00
rustfmt.toml tidy up Rust imports 2021-04-18 18:38:54 +10:00

Anki's Rust code.

backend.proto stores the interfaces used to communicate backend messages between Rust, Python and TypeScript.