Skip to content

Commit 95f5ffd

Browse files
committed
fix: doc for nested fields and new associated function
1 parent 047a931 commit 95f5ffd

File tree

5 files changed

+48
-19
lines changed

5 files changed

+48
-19
lines changed

soa-derive-internal/src/iter.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,9 @@ pub fn derive(input: &Input) -> TokenStream {
223223
#visibility fn iter(&self) -> Iter {
224224
Iter(#create_iter)
225225
}
226+
/// Get an iterator over the
227+
#[doc = #ref_doc_url]
228+
/// in this slice.
226229
#visibility fn into_iter(self) -> Iter<'a> {
227230
Iter(#create_into_iter)
228231
}
@@ -289,14 +292,17 @@ pub fn derive(input: &Input) -> TokenStream {
289292
#visibility fn iter_mut(&mut self) -> IterMut {
290293
IterMut(#create_iter_mut)
291294
}
295+
/// Get a mutable iterator over the
296+
#[doc = #ref_mut_doc_url]
297+
/// in this vector
292298
#visibility fn into_iter(self) -> IterMut<'a> {
293299
IterMut(#create_mut_into_iter)
294300
}
295301
}
296302

297303
impl<'a> soa_derive::SoAIter<'a> for #name {
298-
type Iter = #detail_mod::Iter<'a>;
299-
type IterMut = #detail_mod::IterMut<'a>;
304+
type Iter = Iter<'a>;
305+
type IterMut = IterMut<'a>;
300306
}
301307

302308

soa-derive-internal/src/ptr.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,19 @@ pub fn derive(input: &Input) -> TokenStream {
4242
.map(|field| &field.ty)
4343
.collect::<Vec<_>>();
4444

45-
let fields_doc = fields_names.iter()
45+
let unnested_fields_doc = unnested_fields_names.iter()
4646
.map(|field| format!("A pointer to a `{0}` from a [`{1}`](struct.{1}.html)", field, vec_name))
4747
.collect::<Vec<_>>();
4848

49-
let fields_mut_doc = fields_names.iter()
49+
let nested_fields_doc = nested_fields_names.iter()
50+
.map(|field| format!("A pointer to a `{0}` from a [`{1}`](struct.{1}.html)", field, vec_name))
51+
.collect::<Vec<_>>();
52+
53+
let unnested_fields_mut_doc = unnested_fields_names.iter()
54+
.map(|field| format!("A mutable pointer to a `{0}` from a [`{1}`](struct.{1}.html)", field, vec_name))
55+
.collect::<Vec<_>>();
56+
57+
let nested_fields_mut_doc = nested_fields_names.iter()
5058
.map(|field| format!("A mutable pointer to a `{0}` from a [`{1}`](struct.{1}.html)", field, vec_name))
5159
.collect::<Vec<_>>();
5260

@@ -58,10 +66,11 @@ pub fn derive(input: &Input) -> TokenStream {
5866
#[derive(Copy, Clone)]
5967
#visibility struct #ptr_name {
6068
#(
61-
#[doc = #fields_doc]
69+
#[doc = #unnested_fields_doc]
6270
pub #unnested_fields_names: *const #unnested_fields_types,
6371
)*
6472
#(
73+
#[doc = #nested_fields_doc]
6574
pub #nested_fields_names: <#nested_fields_types as soa_derive::SoAPtr>::Ptr,
6675
)*
6776
}
@@ -73,10 +82,11 @@ pub fn derive(input: &Input) -> TokenStream {
7382
#[derive(Copy, Clone)]
7483
#visibility struct #ptr_mut_name {
7584
#(
76-
#[doc = #fields_mut_doc]
85+
#[doc = #unnested_fields_mut_doc]
7786
pub #unnested_fields_names: *mut #unnested_fields_types,
7887
)*
7988
#(
89+
#[doc = #nested_fields_mut_doc]
8090
pub #nested_fields_names: <#nested_fields_types as soa_derive::SoAPtr>::PtrMut,
8191
)*
8292
}

soa-derive-internal/src/refs.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ pub fn derive(input: &Input) -> TokenStream {
1616
let ref_doc_url = format!("[`{0}`](struct.{0}.html)", ref_name);
1717
let ref_mut_doc_url = format!("[`{0}`](struct.{0}.html)", ref_mut_name);
1818

19-
let fields_names = input.fields.iter()
20-
.map(|field| field.ident.clone().unwrap())
21-
.collect::<Vec<_>>();
2219
let unnested_fields_names = input.unnested_fields.iter()
2320
.map(|field| field.ident.clone().unwrap())
2421
.collect::<Vec<_>>();
@@ -32,11 +29,18 @@ pub fn derive(input: &Input) -> TokenStream {
3229
.map(|field| &field.ty)
3330
.collect::<Vec<_>>();
3431

35-
let fields_doc = fields_names.iter()
32+
let unnested_fields_doc = unnested_fields_names.iter()
33+
.map(|field| format!("A reference to a `{0}` from a [`{1}`](struct.{1}.html)", field, vec_name))
34+
.collect::<Vec<_>>();
35+
36+
let unnested_fields_mut_doc = unnested_fields_names.iter()
37+
.map(|field| format!("A mutable reference to a `{0}` from a [`{1}`](struct.{1}.html)", field, vec_name))
38+
.collect::<Vec<_>>();
39+
let nested_fields_doc = nested_fields_names.iter()
3640
.map(|field| format!("A reference to a `{0}` from a [`{1}`](struct.{1}.html)", field, vec_name))
3741
.collect::<Vec<_>>();
3842

39-
let fields_mut_doc = fields_names.iter()
43+
let nested_fields_mut_doc = nested_fields_names.iter()
4044
.map(|field| format!("A mutable reference to a `{0}` from a [`{1}`](struct.{1}.html)", field, vec_name))
4145
.collect::<Vec<_>>();
4246

@@ -48,11 +52,11 @@ pub fn derive(input: &Input) -> TokenStream {
4852
#[derive(Copy, Clone)]
4953
#visibility struct #ref_name<'a> {
5054
#(
51-
#[doc = #fields_doc]
55+
#[doc = #unnested_fields_doc]
5256
pub #unnested_fields_names: &'a #unnested_fields_types,
5357
)*
5458
#(
55-
#[doc = #fields_doc]
59+
#[doc = #nested_fields_doc]
5660
pub #nested_fields_names: <#nested_fields_types as soa_derive::SoARef<'a>>::Ref,
5761
)*
5862
}
@@ -63,11 +67,11 @@ pub fn derive(input: &Input) -> TokenStream {
6367
#(#[#mut_attrs])*
6468
#visibility struct #ref_mut_name<'a> {
6569
#(
66-
#[doc = #fields_mut_doc]
70+
#[doc = #unnested_fields_mut_doc]
6771
pub #unnested_fields_names: &'a mut #unnested_fields_types,
6872
)*
6973
#(
70-
#[doc = #fields_doc]
74+
#[doc = #nested_fields_mut_doc]
7175
pub #nested_fields_names: <#nested_fields_types as soa_derive::SoARef<'a>>::RefMut,
7276
)*
7377
}

soa-derive-internal/src/slice.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ pub fn derive(input: &Input) -> TokenStream {
4848
.map(|field| &field.ty)
4949
.collect::<Vec<_>>();
5050

51-
let fields_doc = fields_names.iter()
51+
let unnested_fields_doc = unnested_fields_names.iter()
52+
.map(|field| format!("A slice of `{0}` from a [`{1}`](struct.{1}.html)", field, vec_name))
53+
.collect::<Vec<_>>();
54+
let nested_fields_doc = nested_fields_names.iter()
5255
.map(|field| format!("A slice of `{0}` from a [`{1}`](struct.{1}.html)", field, vec_name))
5356
.collect::<Vec<_>>();
5457

@@ -63,10 +66,11 @@ pub fn derive(input: &Input) -> TokenStream {
6366
#(#[#attrs])*
6467
#visibility struct #slice_name<'a> {
6568
#(
66-
#[doc = #fields_doc]
69+
#[doc = #unnested_fields_doc]
6770
pub #unnested_fields_names: &'a [#unnested_fields_types],
6871
)*
6972
#(
73+
#[doc = #nested_fields_doc]
7074
pub #nested_fields_names: <#nested_fields_types as soa_derive::SoASlice<'a>>::Slice,
7175
)*
7276
}

soa-derive-internal/src/vec.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,11 @@ pub fn derive(input: &Input) -> TokenStream {
3636

3737
let first_field = &fields_names[0];
3838

39-
let fields_doc = fields_names.iter()
39+
let unnested_fields_doc = unnested_fields_names.iter()
40+
.map(|field| format!("A vector of `{0}` from a [`{1}`](struct.{1}.html)", field, name))
41+
.collect::<Vec<_>>();
42+
43+
let nested_fields_doc = nested_fields_names.iter()
4044
.map(|field| format!("A vector of `{0}` from a [`{1}`](struct.{1}.html)", field, name))
4145
.collect::<Vec<_>>();
4246

@@ -56,10 +60,11 @@ pub fn derive(input: &Input) -> TokenStream {
5660
#(#[#attrs])*
5761
#visibility struct #vec_name {
5862
#(
59-
#[doc = #fields_doc]
63+
#[doc = #unnested_fields_doc]
6064
pub #unnested_fields_names: Vec<#unnested_fields_types>,
6165
)*
6266
#(
67+
#[doc = #nested_fields_doc]
6368
pub #nested_fields_names: <#nested_fields_types as StructOfArray>::Type,
6469
)*
6570
}

0 commit comments

Comments
 (0)