iddm / thread-priority

A simple Cross-platform thread schedule and priority library for rust.
MIT License
110 stars 20 forks source link

Implement std::error::Error for easier error handling #35

Closed bronsonp closed 10 months ago

bronsonp commented 10 months ago

Currently the thread_priority::Error type does not implement Rust's standard error trait, std::error::Error. This means that user code cannot use the ? operator in certain contexts. Examples include when using the anyhow error handling library or as part of a function that is generic over the type of error that may be returned (Box<dyn std::error::Error>). Some Rust libraries and developers may expect that types representing errors will implement std::error::Error.

This PR adds the trait implementation so that thread_priority::Error integrates more readily with the rest of the Rust ecosystem.

As a demonstration, I also refactored the should_be_possible_to_reset_the_same_priority() unit test to work with the ? operator. The code in the new unit test was a compile error until std::error::Error was implemented.

iddm commented 10 months ago

Hi! Thank you for your contribution! Looks fine to me.