cynic_parser/executable/generated/
argument.rs1use 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}