cynic_parser/executable/generated/
argument.rs

1use super::prelude::*;
2use super::{
3    ids::{ArgumentId, ValueId},
4    value::Value,
5    ExecutableId,
6};
7#[allow(unused_imports)]
8use std::fmt::{self, Write};
9
10pub struct ArgumentRecord {
11    pub name: StringId,
12    pub name_span: Span,
13    pub value: ValueId,
14}
15
16#[derive(Clone, Copy)]
17pub struct Argument<'a>(pub(in super::super) ReadContext<'a, ArgumentId>);
18
19impl<'a> Argument<'a> {
20    pub fn name(&self) -> &'a str {
21        let document = &self.0.document;
22        document.lookup(document.lookup(self.0.id).name)
23    }
24    pub fn name_span(&self) -> Span {
25        let document = self.0.document;
26        document.lookup(self.0.id).name_span
27    }
28    pub fn value(&self) -> Value<'a> {
29        let document = self.0.document;
30        document.read(document.lookup(self.0.id).value)
31    }
32}
33
34impl Argument<'_> {
35    pub fn id(&self) -> ArgumentId {
36        self.0.id
37    }
38}
39
40impl fmt::Debug for Argument<'_> {
41    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
42        f.debug_struct("Argument")
43            .field("name", &self.name())
44            .field("value", &self.value())
45            .finish()
46    }
47}
48
49impl ExecutableId for ArgumentId {
50    type Reader<'a> = Argument<'a>;
51    fn read(self, document: &ExecutableDocument) -> Self::Reader<'_> {
52        Argument(ReadContext { id: self, document })
53    }
54}
55
56impl IdReader for Argument<'_> {
57    type Id = ArgumentId;
58    type Reader<'a> = Argument<'a>;
59    fn new(id: Self::Id, document: &'_ ExecutableDocument) -> Self::Reader<'_> {
60        document.read(id)
61    }
62}