From 30c0099fd72863db4b936be2248d227a02e02ed5 Mon Sep 17 00:00:00 2001 From: tottoto Date: Mon, 3 Mar 2025 06:51:09 +0900 Subject: [PATCH] feat: Allow convert i32 to Code in const context --- tonic/src/status.rs | 46 ++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/tonic/src/status.rs b/tonic/src/status.rs index 6c3e9b0bf..fbf696ffd 100644 --- a/tonic/src/status.rs +++ b/tonic/src/status.rs @@ -779,8 +779,28 @@ impl Code { /// Get the `Code` that represents the integer, if known. /// /// If not known, returns `Code::Unknown` (surprise!). - pub fn from_i32(i: i32) -> Code { - Code::from(i) + pub const fn from_i32(i: i32) -> Code { + match i { + 0 => Code::Ok, + 1 => Code::Cancelled, + 2 => Code::Unknown, + 3 => Code::InvalidArgument, + 4 => Code::DeadlineExceeded, + 5 => Code::NotFound, + 6 => Code::AlreadyExists, + 7 => Code::PermissionDenied, + 8 => Code::ResourceExhausted, + 9 => Code::FailedPrecondition, + 10 => Code::Aborted, + 11 => Code::OutOfRange, + 12 => Code::Unimplemented, + 13 => Code::Internal, + 14 => Code::Unavailable, + 15 => Code::DataLoss, + 16 => Code::Unauthenticated, + + _ => Code::Unknown, + } } /// Convert the string representation of a `Code` (as stored, for example, in the `grpc-status` @@ -845,27 +865,7 @@ impl Code { impl From for Code { fn from(i: i32) -> Self { - match i { - 0 => Code::Ok, - 1 => Code::Cancelled, - 2 => Code::Unknown, - 3 => Code::InvalidArgument, - 4 => Code::DeadlineExceeded, - 5 => Code::NotFound, - 6 => Code::AlreadyExists, - 7 => Code::PermissionDenied, - 8 => Code::ResourceExhausted, - 9 => Code::FailedPrecondition, - 10 => Code::Aborted, - 11 => Code::OutOfRange, - 12 => Code::Unimplemented, - 13 => Code::Internal, - 14 => Code::Unavailable, - 15 => Code::DataLoss, - 16 => Code::Unauthenticated, - - _ => Code::Unknown, - } + Code::from_i32(i) } }