[][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 ExplainString could not be parsed.

ParseRecordError

An error indicating that a Record could not be parsed.

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.