[−][src]Module viaspf::record
A representation of SPF record data.
The data structures here constitute a faithful encoding of the ABNF in RFC 7208, section 12.
The main top-level data structure in this module is the Record
struct.
Record
represents a syntactically valid SPF record. A Record
can be
parsed from a string:
use std::net::Ipv4Addr; use viaspf::record::*; let record = "v=spf1 ip4:12.34.56.78/24 mx -all".parse(); assert_eq!( record, Ok(Record { terms: vec![ Term::Directive(Directive { qualifier: None, mechanism: Mechanism::Ip4(Ip4 { addr: Ipv4Addr::new(12, 34, 56, 78), prefix_len: Some(Ip4CidrLength::new(24).unwrap()), }), }), Term::Directive(Directive { qualifier: None, mechanism: Mechanism::Mx(Mx { domain_spec: None, prefix_len: None, }), }), Term::Directive(Directive { qualifier: Some(Qualifier::Fail), mechanism: Mechanism::All, }), ], }) );
Also provided as a top-level data structure is the ExplainString
struct.
It too can be parsed from a string.
SPF record data may be printed via Display
. The string representations are
the canonical SPF string representations. Thus roundtripping through parsing
and printing is possible:
use viaspf::record::*; let record_str = "v=spf1 mx -all"; assert_eq!(record_str.parse::<Record>()?.to_string(), record_str);
Structs
A | An a mechanism. |
Delimiters | Macro delimiter characters. |
Directive | A directive. |
DomainSpec | A domain specification. |
Exists | An exists mechanism. |
ExplainString | An explain string. |
Explanation | An exp modifier. |
Include | An include mechanism. |
Ip4 | An ip4 mechanism. |
Ip4CidrLength | An IPv4 CIDR prefix length. |
Ip6 | An ip6 mechanism. |
Ip6CidrLength | An IPv6 CIDR prefix length. |
Macro | A macro. |
MacroLiteral | A literal part of a macro string. |
MacroString | A macro string. |
Mx | An mx mechanism. |
Name | A modifier name. |
ParseExplainStringError | An error indicating that an |
ParseRecordError | An error indicating that a |
Ptr | A ptr mechanism. |
Record | An SPF record. |
Redirect | A redirect modifier. |
Unknown | An unknown modifier. |
Enums
DualCidrLength | A combined IPv4 and/or IPv6 CIDR prefix length. |
Escape | An escape sequence in a macro string. |
ExplainStringSegment | A part of an explain string. |
MacroExpand | A part of a macro string that may be expanded. |
MacroKind | The kind of a macro (macro letter). |
MacroStringSegment | A part of a macro string. |
Mechanism | A mechanism. |
Modifier | A modifier. |
Qualifier | A qualifier. |
Term | A term. |