Vec -> HashSet
This commit is contained in:
parent
ce02b7f7a6
commit
0a91daeaa3
2 changed files with 15 additions and 12 deletions
|
@ -14,6 +14,7 @@ use rustdoc_json_types::*;
|
|||
use crate::clean;
|
||||
use crate::formats::item_type::ItemType;
|
||||
use crate::json::JsonRenderer;
|
||||
use std::collections::HashSet;
|
||||
|
||||
impl JsonRenderer<'_> {
|
||||
pub(super) fn convert_item(&self, item: clean::Item) -> Option<Item> {
|
||||
|
@ -225,19 +226,19 @@ crate fn from_ctor_kind(struct_type: CtorKind) -> StructType {
|
|||
}
|
||||
}
|
||||
|
||||
crate fn from_fn_header(header: &rustc_hir::FnHeader) -> Vec<Modifiers> {
|
||||
let mut v = Vec::new();
|
||||
crate fn from_fn_header(header: &rustc_hir::FnHeader) -> HashSet<Modifiers> {
|
||||
let mut v = HashSet::new();
|
||||
|
||||
if let rustc_hir::Unsafety::Unsafe = header.unsafety {
|
||||
v.push(Modifiers::Unsafe);
|
||||
v.insert(Modifiers::Unsafe);
|
||||
}
|
||||
|
||||
if let rustc_hir::IsAsync::Async = header.asyncness {
|
||||
v.push(Modifiers::Async);
|
||||
v.insert(Modifiers::Async);
|
||||
}
|
||||
|
||||
if let rustc_hir::Constness::Const = header.constness {
|
||||
v.push(Modifiers::Const);
|
||||
v.insert(Modifiers::Const);
|
||||
}
|
||||
|
||||
v
|
||||
|
@ -372,9 +373,11 @@ impl From<clean::BareFunctionDecl> for FunctionPointer {
|
|||
let clean::BareFunctionDecl { unsafety, generic_params, decl, abi } = bare_decl;
|
||||
FunctionPointer {
|
||||
header: if let rustc_hir::Unsafety::Unsafe = unsafety {
|
||||
vec![Modifiers::Unsafe]
|
||||
let mut hs = HashSet::new();
|
||||
hs.insert(Modifiers::Unsafe);
|
||||
hs
|
||||
} else {
|
||||
vec![]
|
||||
HashSet::new()
|
||||
},
|
||||
generic_params: generic_params.into_iter().map(Into::into).collect(),
|
||||
decl: decl.into(),
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
//! These types are the public API exposed through the `--output-format json` flag. The [`Crate`]
|
||||
//! struct is the root of the JSON blob and all other items are contained within.
|
||||
|
||||
use std::collections::HashMap;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::path::PathBuf;
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
@ -282,7 +282,7 @@ pub enum StructType {
|
|||
}
|
||||
|
||||
#[non_exhaustive]
|
||||
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
||||
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum Modifiers {
|
||||
Const,
|
||||
|
@ -294,7 +294,7 @@ pub enum Modifiers {
|
|||
pub struct Function {
|
||||
pub decl: FnDecl,
|
||||
pub generics: Generics,
|
||||
pub header: Vec<Modifiers>,
|
||||
pub header: HashSet<Modifiers>,
|
||||
pub abi: String,
|
||||
}
|
||||
|
||||
|
@ -302,7 +302,7 @@ pub struct Function {
|
|||
pub struct Method {
|
||||
pub decl: FnDecl,
|
||||
pub generics: Generics,
|
||||
pub header: Vec<Modifiers>,
|
||||
pub header: HashSet<Modifiers>,
|
||||
pub abi: String,
|
||||
pub has_body: bool,
|
||||
}
|
||||
|
@ -415,7 +415,7 @@ pub enum Type {
|
|||
pub struct FunctionPointer {
|
||||
pub decl: FnDecl,
|
||||
pub generic_params: Vec<GenericParamDef>,
|
||||
pub header: Vec<Modifiers>,
|
||||
pub header: HashSet<Modifiers>,
|
||||
pub abi: String,
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue