Skip to content

Commit 030481e

Browse files
authored
Rust: Make archives Sync+Send (#191)
* Rust: Make archives Sync+Send Fixes #165
1 parent e4de643 commit 030481e

File tree

19 files changed

+197
-161
lines changed

19 files changed

+197
-161
lines changed

flatdata-generator/flatdata/generator/templates/rust/archive.jinja2

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
{% endif %}
1818
#[derive(Clone)]
1919
pub struct {{archive.name}} {
20-
_storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
20+
_storage: flatdata::StorageHandle,
2121
{% for r in archive.resources | supported_resources %}
2222
{{r.name}} : {% if r.optional %}Option<{% endif %}
2323
{%- if [r] | vector_resources -%}
@@ -109,7 +109,7 @@ impl ::std::fmt::Debug for {{archive.name}} {
109109
}
110110

111111
impl {{archive.name}} {
112-
pub fn open(storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>)
112+
pub fn open(storage: flatdata::StorageHandle)
113113
-> ::std::result::Result<Self, flatdata::ResourceStorageError>
114114
{
115115
#[allow(unused_imports)]
@@ -186,7 +186,7 @@ impl {{archive.name}} {
186186
///[`{{archive.name}}`]: struct.{{archive.name}}.html
187187
#[derive(Clone, Debug)]
188188
pub struct {{archive.name}}Builder {
189-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>
189+
storage: flatdata::StorageHandle
190190
}
191191

192192
{% if archive.resources | supported_resources | length -%}
@@ -270,7 +270,7 @@ impl {{archive.name}}Builder {
270270

271271
impl {{archive.name}}Builder {
272272
pub fn new(
273-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
273+
storage: flatdata::StorageHandle,
274274
) -> Result<Self, flatdata::ResourceStorageError> {
275275
flatdata::create_archive("{{archive.name}}", schema::{{ archive_ns }}::{{ archive.name | camel_to_snake_case | upper }}, &storage)?;
276276
Ok(Self { storage })

flatdata-generator/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
setup(
88
name="flatdata-generator",
9-
version="0.4.0-1",
9+
version="0.4.1",
1010
author="Flatdata Developers",
1111
description="Generate source code for C++, Rust, Go or Python from a Flatdata schema file",
1212
long_description=open(os.path.join(SOURCE_FILEPATH, "README.md")).read(),

flatdata-generator/tests/generators/rust_expectations/archives/comments.rs.1

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// This is a comment about foo
22
#[derive(Clone)]
33
pub struct Foo {
4-
_storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
4+
_storage: flatdata::StorageHandle,
55
bar : flatdata::RawData<'static>,
66
}
77

@@ -27,7 +27,7 @@ impl ::std::fmt::Debug for Foo {
2727
}
2828

2929
impl Foo {
30-
pub fn open(storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>)
30+
pub fn open(storage: flatdata::StorageHandle)
3131
-> ::std::result::Result<Self, flatdata::ResourceStorageError>
3232
{
3333
#[allow(unused_imports)]
@@ -53,7 +53,7 @@ impl Foo {
5353
///[`Foo`]: struct.Foo.html
5454
#[derive(Clone, Debug)]
5555
pub struct FooBuilder {
56-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>
56+
storage: flatdata::StorageHandle
5757
}
5858

5959
impl FooBuilder {
@@ -69,7 +69,7 @@ impl FooBuilder {
6969

7070
impl FooBuilder {
7171
pub fn new(
72-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
72+
storage: flatdata::StorageHandle,
7373
) -> Result<Self, flatdata::ResourceStorageError> {
7474
flatdata::create_archive("Foo", schema::foo::FOO, &storage)?;
7575
Ok(Self { storage })
@@ -82,7 +82,7 @@ impl FooBuilder {
8282
/// This is a comment about Bar
8383
#[derive(Clone)]
8484
pub struct Bar {
85-
_storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
85+
_storage: flatdata::StorageHandle,
8686
foo : flatdata::RawData<'static>,
8787
}
8888

@@ -108,7 +108,7 @@ impl ::std::fmt::Debug for Bar {
108108
}
109109

110110
impl Bar {
111-
pub fn open(storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>)
111+
pub fn open(storage: flatdata::StorageHandle)
112112
-> ::std::result::Result<Self, flatdata::ResourceStorageError>
113113
{
114114
#[allow(unused_imports)]
@@ -134,7 +134,7 @@ impl Bar {
134134
///[`Bar`]: struct.Bar.html
135135
#[derive(Clone, Debug)]
136136
pub struct BarBuilder {
137-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>
137+
storage: flatdata::StorageHandle
138138
}
139139

140140
impl BarBuilder {
@@ -150,7 +150,7 @@ impl BarBuilder {
150150

151151
impl BarBuilder {
152152
pub fn new(
153-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
153+
storage: flatdata::StorageHandle,
154154
) -> Result<Self, flatdata::ResourceStorageError> {
155155
flatdata::create_archive("Bar", schema::bar::BAR, &storage)?;
156156
Ok(Self { storage })

flatdata-generator/tests/generators/rust_expectations/archives/empty.rs.1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[derive(Clone)]
22
pub struct A {
3-
_storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
3+
_storage: flatdata::StorageHandle,
44
}
55

66
impl A {
@@ -18,7 +18,7 @@ impl ::std::fmt::Debug for A {
1818
}
1919

2020
impl A {
21-
pub fn open(storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>)
21+
pub fn open(storage: flatdata::StorageHandle)
2222
-> ::std::result::Result<Self, flatdata::ResourceStorageError>
2323
{
2424
#[allow(unused_imports)]
@@ -41,13 +41,13 @@ impl A {
4141
///[`A`]: struct.A.html
4242
#[derive(Clone, Debug)]
4343
pub struct ABuilder {
44-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>
44+
storage: flatdata::StorageHandle
4545
}
4646

4747

4848
impl ABuilder {
4949
pub fn new(
50-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
50+
storage: flatdata::StorageHandle,
5151
) -> Result<Self, flatdata::ResourceStorageError> {
5252
flatdata::create_archive("A", schema::a::A, &storage)?;
5353
Ok(Self { storage })

flatdata-generator/tests/generators/rust_expectations/archives/multivector.rs.1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,7 @@ impl<'a> flatdata::VariadicStruct<'a> for DataU64Index {
571571

572572
#[derive(Clone)]
573573
pub struct A {
574-
_storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
574+
_storage: flatdata::StorageHandle,
575575
data : flatdata::MultiArrayView<'static, Data>,
576576
optional_data : Option<flatdata::MultiArrayView<'static, OptionalData>>,
577577
data_u64_index : flatdata::MultiArrayView<'static, DataU64Index>,
@@ -610,7 +610,7 @@ impl ::std::fmt::Debug for A {
610610
}
611611

612612
impl A {
613-
pub fn open(storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>)
613+
pub fn open(storage: flatdata::StorageHandle)
614614
-> ::std::result::Result<Self, flatdata::ResourceStorageError>
615615
{
616616
#[allow(unused_imports)]
@@ -684,7 +684,7 @@ impl A {
684684
///[`A`]: struct.A.html
685685
#[derive(Clone, Debug)]
686686
pub struct ABuilder {
687-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>
687+
storage: flatdata::StorageHandle
688688
}
689689

690690
impl ABuilder {
@@ -731,7 +731,7 @@ impl ABuilder {
731731

732732
impl ABuilder {
733733
pub fn new(
734-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
734+
storage: flatdata::StorageHandle,
735735
) -> Result<Self, flatdata::ResourceStorageError> {
736736
flatdata::create_archive("A", schema::a::A, &storage)?;
737737
Ok(Self { storage })

flatdata-generator/tests/generators/rust_expectations/archives/namespaces.rs.1

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ impl S {
117117

118118
#[derive(Clone)]
119119
pub struct X {
120-
_storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
120+
_storage: flatdata::StorageHandle,
121121
payload : flatdata::RawData<'static>,
122122
}
123123

@@ -142,7 +142,7 @@ impl ::std::fmt::Debug for X {
142142
}
143143

144144
impl X {
145-
pub fn open(storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>)
145+
pub fn open(storage: flatdata::StorageHandle)
146146
-> ::std::result::Result<Self, flatdata::ResourceStorageError>
147147
{
148148
#[allow(unused_imports)]
@@ -168,7 +168,7 @@ impl X {
168168
///[`X`]: struct.X.html
169169
#[derive(Clone, Debug)]
170170
pub struct XBuilder {
171-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>
171+
storage: flatdata::StorageHandle
172172
}
173173

174174
impl XBuilder {
@@ -184,7 +184,7 @@ impl XBuilder {
184184

185185
impl XBuilder {
186186
pub fn new(
187-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
187+
storage: flatdata::StorageHandle,
188188
) -> Result<Self, flatdata::ResourceStorageError> {
189189
flatdata::create_archive("X", schema::x::X, &storage)?;
190190
Ok(Self { storage })
@@ -339,7 +339,7 @@ impl S {
339339

340340
#[derive(Clone)]
341341
pub struct X {
342-
_storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
342+
_storage: flatdata::StorageHandle,
343343
payload : flatdata::RawData<'static>,
344344
}
345345

@@ -364,7 +364,7 @@ impl ::std::fmt::Debug for X {
364364
}
365365

366366
impl X {
367-
pub fn open(storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>)
367+
pub fn open(storage: flatdata::StorageHandle)
368368
-> ::std::result::Result<Self, flatdata::ResourceStorageError>
369369
{
370370
#[allow(unused_imports)]
@@ -390,7 +390,7 @@ impl X {
390390
///[`X`]: struct.X.html
391391
#[derive(Clone, Debug)]
392392
pub struct XBuilder {
393-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>
393+
storage: flatdata::StorageHandle
394394
}
395395

396396
impl XBuilder {
@@ -406,7 +406,7 @@ impl XBuilder {
406406

407407
impl XBuilder {
408408
pub fn new(
409-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
409+
storage: flatdata::StorageHandle,
410410
) -> Result<Self, flatdata::ResourceStorageError> {
411411
flatdata::create_archive("X", schema::x::X, &storage)?;
412412
Ok(Self { storage })
@@ -544,7 +544,7 @@ impl<'a> flatdata::VariadicStruct<'a> for Multi {
544544

545545
#[derive(Clone)]
546546
pub struct A {
547-
_storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
547+
_storage: flatdata::StorageHandle,
548548
single : &'static super::n::S,
549549
list : &'static [super::m::S],
550550
multi : flatdata::MultiArrayView<'static, Multi>,
@@ -591,7 +591,7 @@ impl ::std::fmt::Debug for A {
591591
}
592592

593593
impl A {
594-
pub fn open(storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>)
594+
pub fn open(storage: flatdata::StorageHandle)
595595
-> ::std::result::Result<Self, flatdata::ResourceStorageError>
596596
{
597597
#[allow(unused_imports)]
@@ -639,7 +639,7 @@ impl A {
639639
///[`A`]: struct.A.html
640640
#[derive(Clone, Debug)]
641641
pub struct ABuilder {
642-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>
642+
storage: flatdata::StorageHandle
643643
}
644644

645645
impl ABuilder {
@@ -701,7 +701,7 @@ impl ABuilder {
701701

702702
impl ABuilder {
703703
pub fn new(
704-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
704+
storage: flatdata::StorageHandle,
705705
) -> Result<Self, flatdata::ResourceStorageError> {
706706
flatdata::create_archive("A", schema::a::A, &storage)?;
707707
Ok(Self { storage })

flatdata-generator/tests/generators/rust_expectations/archives/ranges.rs.1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ impl S {
9090

9191
#[derive(Clone)]
9292
pub struct A {
93-
_storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
93+
_storage: flatdata::StorageHandle,
9494
data : &'static [super::n::S],
9595
}
9696

@@ -115,7 +115,7 @@ impl ::std::fmt::Debug for A {
115115
}
116116

117117
impl A {
118-
pub fn open(storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>)
118+
pub fn open(storage: flatdata::StorageHandle)
119119
-> ::std::result::Result<Self, flatdata::ResourceStorageError>
120120
{
121121
#[allow(unused_imports)]
@@ -141,7 +141,7 @@ impl A {
141141
///[`A`]: struct.A.html
142142
#[derive(Clone, Debug)]
143143
pub struct ABuilder {
144-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>
144+
storage: flatdata::StorageHandle
145145
}
146146

147147
impl ABuilder {
@@ -171,7 +171,7 @@ impl ABuilder {
171171

172172
impl ABuilder {
173173
pub fn new(
174-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
174+
storage: flatdata::StorageHandle,
175175
) -> Result<Self, flatdata::ResourceStorageError> {
176176
flatdata::create_archive("A", schema::a::A, &storage)?;
177177
Ok(Self { storage })

flatdata-generator/tests/generators/rust_expectations/archives/raw_data.rs.1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[derive(Clone)]
22
pub struct A {
3-
_storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
3+
_storage: flatdata::StorageHandle,
44
data : flatdata::RawData<'static>,
55
optional_data : Option<flatdata::RawData<'static>>,
66
}
@@ -32,7 +32,7 @@ impl ::std::fmt::Debug for A {
3232
}
3333

3434
impl A {
35-
pub fn open(storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>)
35+
pub fn open(storage: flatdata::StorageHandle)
3636
-> ::std::result::Result<Self, flatdata::ResourceStorageError>
3737
{
3838
#[allow(unused_imports)]
@@ -61,7 +61,7 @@ impl A {
6161
///[`A`]: struct.A.html
6262
#[derive(Clone, Debug)]
6363
pub struct ABuilder {
64-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>
64+
storage: flatdata::StorageHandle
6565
}
6666

6767
impl ABuilder {
@@ -85,7 +85,7 @@ impl ABuilder {
8585

8686
impl ABuilder {
8787
pub fn new(
88-
storage: ::std::rc::Rc<dyn flatdata::ResourceStorage>,
88+
storage: flatdata::StorageHandle,
8989
) -> Result<Self, flatdata::ResourceStorageError> {
9090
flatdata::create_archive("A", schema::a::A, &storage)?;
9191
Ok(Self { storage })

0 commit comments

Comments
 (0)