I don't really love how the features are laid out inside receive especially. Send is not as big of a deal because the state machine has been flattened. If there were separate modules for separate features I think they'd be easier to reason about from docs.rs
Consider removing the not(feature = v2) feature since we want to discourage its use and one can replicate v1 soverignty by running both a directory and payjoin client on the same machine. Rust features should be additive.
follow ups:
#500
I don't really love how the features are laid out inside receive especially. Send is not as big of a deal because the state machine has been flattened. If there were separate modules for separate features I think they'd be easier to reason about from docs.rs
Consider removing the
not(feature = v2)feature since we want to discourage its use and one can replicate v1 soverignty by running both a directory and payjoin client on the same machine. Rust features should be additive.send::{v1, v2}modules Abstract send feature error variants into separate feature-specific abstractions #464receivev1 typestate machine intoreceive::v1module with feature-gated visibilityreceive::{v1, v2}errors (related: Review usage ofcrate::receive::Error#312,) Separate receive::{v1,v2} error modules #482optional_parameters::SUPPORTED_VERSIONSaccording to calling module, not feature flag #490follow ups:
#500