rustvello_proto/status/
concurrency.rs1use serde::{Deserialize, Serialize};
2use std::fmt;
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
8#[non_exhaustive]
9pub enum ConcurrencyControlType {
10 Unlimited,
12 Task,
14 Argument,
16 None,
18}
19
20impl Default for ConcurrencyControlType {
21 fn default() -> Self {
22 Self::Unlimited
23 }
24}
25
26impl fmt::Display for ConcurrencyControlType {
27 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
28 match self {
29 Self::Unlimited => f.write_str("Unlimited"),
30 Self::Task => f.write_str("Task"),
31 Self::Argument => f.write_str("Argument"),
32 Self::None => f.write_str("None"),
33 }
34 }
35}
36
37impl std::str::FromStr for ConcurrencyControlType {
38 type Err = String;
39
40 fn from_str(s: &str) -> Result<Self, Self::Err> {
41 match s.to_uppercase().as_str() {
42 "UNLIMITED" | "DISABLED" => Ok(Self::Unlimited),
43 "TASK" => Ok(Self::Task),
44 "ARGUMENT" | "ARGUMENTS" | "KEYS" => Ok(Self::Argument),
45 "NONE" => Ok(Self::None),
46 _ => Err(format!("unknown ConcurrencyControlType: {s:?}")),
47 }
48 }
49}