luaur_analysis/functions/write_json_emitter_alt_b.rs
1//! Source: `Analysis/include/Luau/JsonEmitter.h` (lines 227-234, hand-ported)
2//!
3//! C++ template:
4//! ```cpp
5//! template<typename T>
6//! void write(JsonEmitter& emitter, const std::optional<T>& v)
7//! {
8//! if (v.has_value())
9//! write(emitter, *v);
10//! else
11//! emitter.writeRaw("null");
12//! }
13//! ```
14
15use crate::methods::object_emitter_write_pair::WriteJson;
16use crate::records::json_emitter::JsonEmitter;
17
18pub fn write<T: WriteJson>(emitter: &mut JsonEmitter, v: &Option<T>) {
19 match v {
20 Some(value) => value.write_json(emitter),
21 None => emitter.write_raw_string_view("null"),
22 }
23}
24
25/// `write(JsonEmitter&, const std::optional<T>&)` exposed through `WriteJson` so
26/// an optional can be a key value.
27impl<T: WriteJson> WriteJson for Option<T> {
28 fn write_json(&self, emitter: &mut JsonEmitter) {
29 write(emitter, self);
30 }
31}