@@ -1345,16 +1345,22 @@ fn item_struct(w: &mut Writer, it: &clean::Item,
1345
1345
Some ( & s. generics ) ,
1346
1346
s. struct_type ,
1347
1347
s. fields . as_slice ( ) ,
1348
- s. fields_stripped ,
1349
1348
"" ,
1350
1349
true ) ) ;
1351
1350
try!( write ! ( w, "</pre>" ) ) ;
1352
1351
1353
1352
try!( document ( w, it) ) ;
1353
+ let mut fields = s. fields . iter ( ) . filter ( |f| {
1354
+ match f. inner {
1355
+ clean:: StructFieldItem ( clean:: HiddenStructField ) => false ,
1356
+ clean:: StructFieldItem ( clean:: TypedStructField ( ..) ) => true ,
1357
+ _ => false ,
1358
+ }
1359
+ } ) . peekable ( ) ;
1354
1360
match s. struct_type {
1355
- doctree:: Plain if s . fields . len ( ) > 0 => {
1361
+ doctree:: Plain if fields. peek ( ) . is_some ( ) => {
1356
1362
try!( write ! ( w, "<h2 class='fields'>Fields</h2>\n <table>" ) ) ;
1357
- for field in s . fields . iter ( ) {
1363
+ for field in fields {
1358
1364
try!( write ! ( w, "<tr><td id='structfield.{name}'>\
1359
1365
<code>{name}</code></td><td>",
1360
1366
name = field. name. get_ref( ) . as_slice( ) ) ) ;
@@ -1400,7 +1406,6 @@ fn item_enum(w: &mut Writer, it: &clean::Item, e: &clean::Enum) -> fmt::Result {
1400
1406
None ,
1401
1407
s. struct_type ,
1402
1408
s. fields . as_slice ( ) ,
1403
- s. fields_stripped ,
1404
1409
" " ,
1405
1410
false ) ) ;
1406
1411
}
@@ -1429,9 +1434,18 @@ fn item_enum(w: &mut Writer, it: &clean::Item, e: &clean::Enum) -> fmt::Result {
1429
1434
clean:: VariantItem ( ref var) => {
1430
1435
match var. kind {
1431
1436
clean:: StructVariant ( ref s) => {
1437
+ let mut fields = s. fields . iter ( ) . filter ( |f| {
1438
+ match f. inner {
1439
+ clean:: StructFieldItem ( ref t) => match * t {
1440
+ clean:: HiddenStructField => false ,
1441
+ clean:: TypedStructField ( ..) => true ,
1442
+ } ,
1443
+ _ => false ,
1444
+ }
1445
+ } ) ;
1432
1446
try!( write ! ( w, "<h3 class='fields'>Fields</h3>\n
1433
1447
<table>" ) ) ;
1434
- for field in s . fields . iter ( ) {
1448
+ for field in fields {
1435
1449
try!( write ! ( w, "<tr><td \
1436
1450
id='variant.{v}.field.{f}'>\
1437
1451
<code>{f}</code></td><td>",
@@ -1460,7 +1474,6 @@ fn render_struct(w: &mut Writer, it: &clean::Item,
1460
1474
g : Option < & clean:: Generics > ,
1461
1475
ty : doctree:: StructType ,
1462
1476
fields : & [ clean:: Item ] ,
1463
- fields_stripped : bool ,
1464
1477
tab : & str ,
1465
1478
structhead : bool ) -> fmt:: Result {
1466
1479
try!( write ! ( w, "{}{}{}" ,
@@ -1474,17 +1487,21 @@ fn render_struct(w: &mut Writer, it: &clean::Item,
1474
1487
match ty {
1475
1488
doctree:: Plain => {
1476
1489
try!( write ! ( w, " \\ {\n {}" , tab) ) ;
1490
+ let mut fields_stripped = false ;
1477
1491
for field in fields. iter ( ) {
1478
1492
match field. inner {
1479
- clean:: StructFieldItem ( ref ty) => {
1493
+ clean:: StructFieldItem ( clean:: HiddenStructField ) => {
1494
+ fields_stripped = true ;
1495
+ }
1496
+ clean:: StructFieldItem ( clean:: TypedStructField ( ref ty) ) => {
1480
1497
try!( write ! ( w, " {}{}: {},\n {}" ,
1481
1498
VisSpace ( field. visibility) ,
1482
1499
field. name. get_ref( ) . as_slice( ) ,
1483
- ty . type_ ,
1500
+ * ty ,
1484
1501
tab) ) ;
1485
1502
}
1486
- _ => unreachable ! ( )
1487
- }
1503
+ _ => unreachable ! ( ) ,
1504
+ } ;
1488
1505
}
1489
1506
1490
1507
if fields_stripped {
@@ -1499,8 +1516,11 @@ fn render_struct(w: &mut Writer, it: &clean::Item,
1499
1516
try!( write ! ( w, ", " ) ) ;
1500
1517
}
1501
1518
match field. inner {
1502
- clean:: StructFieldItem ( ref field) => {
1503
- try!( write ! ( w, "{}" , field. type_) ) ;
1519
+ clean:: StructFieldItem ( clean:: HiddenStructField ) => {
1520
+ try!( write ! ( w, "_" ) )
1521
+ }
1522
+ clean:: StructFieldItem ( clean:: TypedStructField ( ref ty) ) => {
1523
+ try!( write ! ( w, "{}{}" , VisSpace ( field. visibility) , * ty) )
1504
1524
}
1505
1525
_ => unreachable ! ( )
1506
1526
}
0 commit comments