distrib_common/language.rs
1// This is free and unencumbered software released into the public domain.
2
3use alloc::string::String;
4use derive_more::{Display, FromStr};
5
6/// A supported programming language.
7///
8/// See: <https://www.tiobe.com/tiobe-index/>
9#[derive(Clone, Debug, Display, Default, Eq, FromStr, Hash, Ord, PartialEq, PartialOrd)]
10#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
11#[cfg_attr(
12 feature = "serde",
13 serde(rename_all(serialize = "lowercase", deserialize = "lowercase"))
14)]
15#[non_exhaustive]
16pub enum Language {
17 /// The Ada language.
18 ///
19 /// See: <https://ada-lang.io/>
20 #[cfg(feature = "unstable")]
21 Ada,
22
23 /// The C language.
24 ///
25 /// See: <https://en.cppreference.com/w/c>
26 #[cfg(feature = "unstable")]
27 C,
28
29 /// The Clojure language.
30 ///
31 /// See: <https://clojure.org/>
32 #[cfg(feature = "unstable")]
33 Clojure,
34
35 /// The C++ language.
36 ///
37 /// See: <https://cppreference.com/>
38 #[cfg(feature = "unstable")]
39 Cpp,
40
41 /// The Crystal language.
42 ///
43 /// See: <https://crystal-lang.org/>
44 #[cfg(feature = "unstable")]
45 Crystal,
46
47 /// The C# language.
48 ///
49 /// See: <https://csharp.net/>
50 #[cfg(feature = "unstable")]
51 CSharp,
52
53 /// The D language.
54 ///
55 /// See: <https://dlang.org/>
56 #[cfg(feature = "unstable")]
57 D,
58
59 /// The Dart language.
60 ///
61 /// See: <https://dart.dev/>
62 Dart,
63
64 /// The Elixir language.
65 ///
66 /// See: <https://elixir-lang.org/>
67 Elixir,
68
69 /// The Erlang language.
70 ///
71 /// See: <https://erlang.org/>
72 Erlang,
73
74 /// The Fortran language.
75 ///
76 /// See: <https://fortran-lang.org/>
77 #[cfg(feature = "unstable")]
78 Fortran,
79
80 /// The F# language.
81 ///
82 /// See: <https://fsharp.org/>
83 #[cfg(feature = "unstable")]
84 FSharp,
85
86 /// The Gleam language.
87 ///
88 /// See: <https://gleam.run/>
89 Gleam,
90
91 /// The Go language.
92 ///
93 /// See: <https://go.dev/>
94 #[cfg(feature = "unstable")]
95 Go,
96
97 /// The Haskell language.
98 ///
99 /// See: <https://haskell.org/>
100 #[cfg(feature = "unstable")]
101 Haskell,
102
103 /// The Java language.
104 ///
105 /// See: <https://java.com/>
106 #[cfg(feature = "unstable")]
107 Java,
108
109 /// The JavaScript (aka JS) language.
110 ///
111 /// See: <https://developer.mozilla.org/en-US/docs/Web/JavaScript>
112 JavaScript,
113
114 /// The Julia language.
115 ///
116 /// See: <https://julialang.org/>
117 #[cfg(feature = "unstable")]
118 Julia,
119
120 /// The Kotlin language.
121 ///
122 /// See: <https://kotlinlang.org/>
123 #[cfg(feature = "unstable")]
124 Kotlin,
125
126 /// The Common Lisp language.
127 ///
128 /// See: <https://common-lisp.net/>
129 #[cfg(feature = "unstable")]
130 Lisp,
131
132 /// The Lua language.
133 ///
134 /// See: <https://lua.org/>
135 #[cfg(feature = "unstable")]
136 Lua,
137
138 /// The Mojo language.
139 ///
140 /// See: <https://mojolang.org/>
141 #[cfg(feature = "unstable")]
142 Mojo,
143
144 /// The Nim language.
145 ///
146 /// See: <https://nim-lang.org/>
147 #[cfg(feature = "unstable")]
148 Nim,
149
150 /// The OCaml language.
151 ///
152 /// See: <https://ocaml.org/>
153 #[cfg(feature = "unstable")]
154 Ocaml,
155
156 /// The Perl language.
157 ///
158 /// See: <https://perl.org/>
159 #[cfg(feature = "unstable")]
160 Perl,
161
162 /// The PHP language.
163 ///
164 /// See: <https://php.net/>
165 #[cfg(feature = "unstable")]
166 Php,
167
168 /// The Python language.
169 ///
170 /// See: <https://python.org/>
171 Python,
172
173 /// The R language.
174 ///
175 /// See: <https://r-project.org/>
176 #[cfg(feature = "unstable")]
177 R,
178
179 /// The Racket language.
180 ///
181 /// See: <https://racket-lang.org/>
182 #[cfg(feature = "unstable")]
183 Racket,
184
185 /// The Rhombus language.
186 ///
187 /// See: <https://rhombus-lang.org/>
188 #[cfg(feature = "unstable")]
189 Rhombus,
190
191 /// The Ruby language.
192 ///
193 /// See: <https://ruby-lang.org/>
194 Ruby,
195
196 /// The Rust language.
197 ///
198 /// See: <https://rust-lang.org/>
199 #[default]
200 Rust,
201
202 /// The Scala language.
203 ///
204 /// See: <https://scala-lang.org/>
205 #[cfg(feature = "unstable")]
206 Scala,
207
208 /// The Swift language.
209 ///
210 /// See: <https://swift.org/>
211 #[cfg(feature = "unstable")]
212 Swift,
213
214 /// The TypeScript (aka TS) language.
215 ///
216 /// See: <https://typescriptlang.org/>
217 TypeScript,
218
219 /// The Zig language.
220 ///
221 /// See: <https://ziglang.org/>
222 #[cfg(feature = "unstable")]
223 Zig,
224}