The Rust num-bigint crate has a useful function for efficiently calculating modular multiplicative inverses, but is unfortunately not public. The function is copied here and modified to be public.

Source: https://github.com/rust-num/num-bigint/blob/4024df9670d408934984c68a5c4faed2e6a3e923/src/monty.rs#L15