Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitee114bc

Browse files
committed
test: Don't borrow when deserializing fixtures
1 parentcc8ee29 commitee114bc

File tree

2 files changed

+31
-74
lines changed

2 files changed

+31
-74
lines changed

‎tests/fixtures/deserialize.rs‎

Lines changed: 27 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,30 @@
1-
use serde::{Deserialize,Deserializer,Serialize};
1+
use serde::Deserialize;
22
use std::ops::Range;
33

44
use annotate_snippets::renderer::DEFAULT_TERM_WIDTH;
55
use annotate_snippets::{Annotation,Level,Message,Renderer,Snippet};
66

77
#[derive(Deserialize)]
8-
pub(crate)structFixture<'a>{
8+
pub(crate)structFixture{
99
#[serde(default)]
1010
pub(crate)renderer:RendererDef,
11-
#[serde(borrow)]
12-
pub(crate)message:MessageDef<'a>,
11+
pub(crate)message:MessageDef,
1312
}
1413

1514
#[derive(Deserialize)]
16-
pubstructMessageDef<'a>{
15+
pubstructMessageDef{
1716
#[serde(with ="LevelDef")]
1817
publevel:Level,
19-
#[serde(borrow)]
20-
pubtitle:&'astr,
18+
pubtitle:String,
2119
#[serde(default)]
22-
#[serde(borrow)]
23-
pubid:Option<&'astr>,
20+
pubid:Option<String>,
2421
#[serde(default)]
25-
#[serde(borrow)]
26-
pubfooter:Vec<MessageDef<'a>>,
27-
#[serde(deserialize_with ="deserialize_snippets")]
28-
#[serde(borrow)]
29-
pubsnippets:Vec<Snippet<'a>>,
22+
pubfooter:Vec<MessageDef>,
23+
pubsnippets:Vec<SnippetDef>,
3024
}
3125

32-
impl<'a>From<MessageDef<'a>>forMessage<'a>{
33-
fnfrom(val:MessageDef<'a>) ->Self{
26+
impl<'a>From<&'aMessageDef>forMessage<'a>{
27+
fnfrom(val:&'aMessageDef) ->Self{
3428
letMessageDef{
3529
level,
3630
title,
@@ -42,100 +36,61 @@ impl<'a> From<MessageDef<'a>> for Message<'a> {
4236
ifletSome(id) = id{
4337
message = message.id(id);
4438
}
45-
message = message.snippets(snippets);
46-
message = message.footers(footer.into_iter().map(Into::into));
39+
message = message.snippets(snippets.iter().map(Snippet::from));
40+
message = message.footers(footer.iter().map(Into::into));
4741
message
4842
}
4943
}
5044

51-
fndeserialize_snippets<'de,D>(deserializer:D) ->Result<Vec<Snippet<'de>>,D::Error>
52-
where
53-
D:Deserializer<'de>,
54-
{
55-
#[derive(Deserialize)]
56-
structWrapper<'a>(
57-
#[serde(with ="SnippetDef")]
58-
#[serde(borrow)]
59-
SnippetDef<'a>,
60-
);
61-
62-
let v =Vec::deserialize(deserializer)?;
63-
Ok(v.into_iter().map(|Wrapper(a)| a.into()).collect())
64-
}
65-
6645
#[derive(Deserialize)]
67-
pubstructSnippetDef<'a>{
68-
#[serde(borrow)]
69-
pubsource:&'astr,
46+
pubstructSnippetDef{
47+
pubsource:String,
7048
publine_start:usize,
71-
#[serde(borrow)]
72-
puborigin:Option<&'astr>,
73-
#[serde(deserialize_with ="deserialize_annotations")]
74-
#[serde(borrow)]
75-
pubannotations:Vec<Annotation<'a>>,
49+
puborigin:Option<String>,
50+
pubannotations:Vec<AnnotationDef>,
7651
#[serde(default)]
7752
pubfold:bool,
7853
}
7954

80-
impl<'a>From<SnippetDef<'a>>forSnippet<'a>{
81-
fnfrom(val:SnippetDef<'a>) ->Self{
55+
impl<'a>From<&'aSnippetDef>forSnippet<'a>{
56+
fnfrom(val:&'aSnippetDef) ->Self{
8257
letSnippetDef{
8358
source,
8459
line_start,
8560
origin,
8661
annotations,
8762
fold,
8863
} = val;
89-
letmut snippet =Snippet::source(source).line_start(line_start).fold(fold);
64+
letmut snippet =Snippet::source(source).line_start(*line_start).fold(*fold);
9065
ifletSome(origin) = origin{
9166
snippet = snippet.origin(origin);
9267
}
93-
snippet = snippet.annotations(annotations);
68+
snippet = snippet.annotations(annotations.iter().map(Into::into));
9469
snippet
9570
}
9671
}
9772

98-
fndeserialize_annotations<'de,D>(deserializer:D) ->Result<Vec<Annotation<'de>>,D::Error>
99-
where
100-
D:Deserializer<'de>,
101-
{
102-
#[derive(Deserialize)]
103-
structWrapper<'a>(#[serde(borrow)]AnnotationDef<'a>);
104-
105-
let v =Vec::deserialize(deserializer)?;
106-
Ok(v.into_iter().map(|Wrapper(a)| a.into()).collect())
107-
}
108-
109-
#[derive(Serialize,Deserialize)]
110-
pubstructAnnotationDef<'a>{
73+
#[derive(Deserialize)]
74+
pubstructAnnotationDef{
11175
pubrange:Range<usize>,
112-
#[serde(borrow)]
113-
publabel:&'astr,
76+
publabel:String,
11477
#[serde(with ="LevelDef")]
11578
publevel:Level,
11679
}
11780

118-
impl<'a>From<AnnotationDef<'a>>forAnnotation<'a>{
119-
fnfrom(val:AnnotationDef<'a>) ->Self{
81+
impl<'a>From<&'aAnnotationDef>forAnnotation<'a>{
82+
fnfrom(val:&'aAnnotationDef) ->Self{
12083
letAnnotationDef{
12184
range,
12285
label,
12386
level,
12487
} = val;
125-
level.span(range).label(label)
88+
level.span(range.start..range.end).label(label)
12689
}
12790
}
12891

129-
#[derive(Serialize,Deserialize)]
130-
pub(crate)structLabelDef<'a>{
131-
#[serde(with ="LevelDef")]
132-
pub(crate)level:Level,
133-
#[serde(borrow)]
134-
pub(crate)label:&'astr,
135-
}
136-
13792
#[allow(dead_code)]
138-
#[derive(Serialize,Deserialize)]
93+
#[derive(Deserialize)]
13994
#[serde(remote ="Level")]
14095
enumLevelDef{
14196
Error,

‎tests/fixtures/main.rs‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ fn setup(input_path: std::path::PathBuf) -> tryfn::Case {
3333

3434
fntest(input_path:&std::path::Path) ->Result<Data,Box<dynError>>{
3535
let src = std::fs::read_to_string(input_path)?;
36-
let(renderer, message):(Renderer,Message<'_>) =
37-
toml::from_str(&src).map(|a:Fixture<'_>|(a.renderer.into(), a.message.into()))?;
36+
let fixture:Fixture = toml::from_str(&src)?;
37+
let renderer:Renderer = fixture.renderer.into();
38+
let message:Message<'_> =(&fixture.message).into();
39+
3840
let actual = renderer.render(message).to_string();
3941
Ok(Data::from(actual).coerce_to(DataFormat::TermSvg))
4042
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp