Skip to content

Commit 9fe5796

Browse files
committed
Merge branch 'tobiasfunke1/export-macros' into 'main'
See #22
2 parents 21803ef + 24416f8 commit 9fe5796

File tree

6 files changed

+20
-42
lines changed

6 files changed

+20
-42
lines changed

crates/sip-types/src/header/mod.rs

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use headers::OneOrMore;
88
use name::Name;
99

1010
mod error;
11-
pub(crate) mod headers;
11+
pub mod headers;
1212
pub mod multiple;
1313
pub(crate) mod name;
1414

@@ -88,18 +88,19 @@ impl<H: HeaderParse> DecodeValues for H {
8888
}
8989
}
9090

91+
#[macro_export]
9192
macro_rules! csv_header {
9293
($(#[$meta:meta])* $struct_name:ident, $wrapping:ty, $header_name:expr) => {
9394
$(#[$meta])*
9495
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9596
pub struct $struct_name(pub $wrapping);
9697

97-
impl ConstNamed for $struct_name {
98+
impl $crate::header::ConstNamed for $struct_name {
9899
const NAME: Name = $header_name;
99100
}
100101

101-
impl HeaderParse for $struct_name {
102-
fn parse<'i>(ctx: ParseCtx, i: &'i str) -> Result<(&'i str, Self)> {
102+
impl $crate::header::HeaderParse for $struct_name {
103+
fn parse<'i>(ctx: $crate::parse::ParseCtx, i: &'i str) -> anyhow::Result<(&'i str, Self)> {
103104
if let Some(comma_idx) = i.find(',') {
104105
Ok((
105106
&i[comma_idx..],
@@ -111,48 +112,49 @@ macro_rules! csv_header {
111112
}
112113
}
113114

114-
impl ExtendValues for $struct_name {
115-
fn extend_values(&self, _: PrintCtx<'_>, values: &mut OneOrMore) {
115+
impl $crate::header::ExtendValues for $struct_name {
116+
fn extend_values(&self, _: $crate::print::PrintCtx<'_>, values: &mut $crate::header::headers::OneOrMore) {
116117
let value = match values {
117-
OneOrMore::One(value) => value,
118-
OneOrMore::More(values) => {
118+
$crate::header::headers::OneOrMore::One(value) => value,
119+
$crate::header::headers::OneOrMore::More(values) => {
119120
values.last_mut().expect("empty OneOrMore::More variant")
120121
}
121122
};
122123

123124
*value = format!("{}, {}", value, self.0).into();
124125
}
125126

126-
fn create_values(&self, _: PrintCtx<'_>) -> OneOrMore {
127-
OneOrMore::One(self.0.to_string().into())
127+
fn create_values(&self, _: $crate::print::PrintCtx<'_>) -> $crate::header::headers::OneOrMore {
128+
$crate::header::headers::OneOrMore::One(self.0.to_string().into())
128129
}
129130
}
130131
};
131132
}
132133

134+
#[macro_export]
133135
macro_rules! from_str_header {
134136
($(#[$meta:meta])* $struct_name:ident, $header_name:expr, $from_str_ty:ty) => {
135137
$(#[$meta])*
136138
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
137139
pub struct $struct_name(pub $from_str_ty);
138140

139-
impl ConstNamed for $struct_name {
141+
impl $crate::header::ConstNamed for $struct_name {
140142
const NAME: Name = $header_name;
141143
}
142144

143-
impl HeaderParse for $struct_name {
144-
fn parse<'i>(_: ParseCtx, i: &'i str) -> Result<(&'i str, Self)> {
145+
impl $crate::header::HeaderParse for $struct_name {
146+
fn parse<'i>(_: $crate::parse::ParseCtx, i: &'i str) -> anyhow::Result<(&'i str, Self)> {
145147
Ok(("", Self(i.trim().parse()?)))
146148
}
147149
}
148150

149-
impl ExtendValues for $struct_name {
150-
fn extend_values(&self, ctx: PrintCtx<'_>, values: &mut OneOrMore) {
151+
impl $crate::header::ExtendValues for $struct_name {
152+
fn extend_values(&self, ctx: $crate::print::PrintCtx<'_>, values: &mut $crate::header::headers::OneOrMore) {
151153
*values = self.create_values(ctx)
152154
}
153155

154-
fn create_values(&self, _: PrintCtx<'_>) -> OneOrMore {
155-
OneOrMore::One(self.0.to_string().into())
156+
fn create_values(&self, _: $crate::print::PrintCtx<'_>) -> $crate::header::headers::OneOrMore {
157+
$crate::header::headers::OneOrMore::One(self.0.to_string().into())
156158
}
157159
}
158160

crates/sip-types/src/header/typed/accept.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
use crate::header::headers::OneOrMore;
21
use crate::header::name::Name;
3-
use crate::header::{ConstNamed, ExtendValues, HeaderParse};
4-
use crate::parse::ParseCtx;
5-
use crate::print::PrintCtx;
6-
use anyhow::Result;
72
use bytesstr::BytesStr;
83

94
csv_header! {

crates/sip-types/src/header/typed/allow.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
1-
use crate::header::headers::OneOrMore;
21
use crate::header::name::Name;
3-
use crate::header::{ConstNamed, ExtendValues, HeaderParse};
42
use crate::method::Method;
5-
use crate::parse::ParseCtx;
6-
use crate::print::PrintCtx;
7-
use anyhow::Result;
83

94
csv_header! {
105
/// `Allow` header, contains only one method.

crates/sip-types/src/header/typed/expires.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
use crate::header::headers::OneOrMore;
2-
use crate::header::{ConstNamed, ExtendValues, HeaderParse};
3-
use crate::parse::ParseCtx;
4-
use crate::print::PrintCtx;
51
use crate::Name;
6-
use anyhow::Result;
72

83
from_str_header! {
94
/// `Expires` header

crates/sip-types/src/header/typed/extensions.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
use crate::header::headers::OneOrMore;
21
use crate::header::name::Name;
3-
use crate::header::{ConstNamed, ExtendValues, HeaderParse};
4-
use crate::parse::ParseCtx;
5-
use crate::print::PrintCtx;
6-
use anyhow::Result;
72
use bytesstr::BytesStr;
83

94
csv_header! {

crates/sip-types/src/header/typed/max_fwd.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
use crate::header::headers::OneOrMore;
2-
use crate::header::{ConstNamed, ExtendValues, HeaderParse};
3-
use crate::parse::ParseCtx;
4-
use crate::print::PrintCtx;
51
use crate::Name;
6-
use anyhow::Result;
72

83
from_str_header! {
94
/// `Max-Forwards` header
@@ -15,6 +10,7 @@ from_str_header! {
1510
#[cfg(test)]
1611
mod test {
1712
use super::*;
13+
use crate::header::HeaderParse;
1814
use crate::parse::ParseCtx;
1915
use bytesstr::BytesStr;
2016

0 commit comments

Comments
 (0)