1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//! RPC error types.
/// Errors that can occur while preparing or performing RPC calls.
///
/// Protocol errors correspond to ONC-RPC reply statuses. Local transport and
/// pool errors have no wire-level equivalent; if returned by a server handler,
/// `rpc_driver` encodes them as [`RpcError::SystemError`].
///
/// # Wire boundary versus driver-local variants
///
/// The wire-level contract — stable across driver releases — is:
/// [`InvalidProcedure`](RpcError::InvalidProcedure),
/// [`ProgUnavail`](RpcError::ProgUnavail),
/// [`InvalidVersion`](RpcError::InvalidVersion),
/// [`RpcMismatch`](RpcError::RpcMismatch),
/// [`GarbageArguments`](RpcError::GarbageArguments),
/// [`SystemError`](RpcError::SystemError), and
/// [`AuthenticationError`](RpcError::AuthenticationError).
///
/// The remaining variants describe local operational failures
/// (connections, pools) and are surfaced to callers without crossing the
/// wire. The enum is `#[non_exhaustive]`, so new operational variants can
/// be added without a breaking release; any variant unknown to a given
/// driver release is encoded on the wire as a system error.