1
Fork 0

Vec -> HashSet

This commit is contained in:
Rune Tynan 2021-02-08 16:04:14 -05:00
parent ce02b7f7a6
commit 0a91daeaa3
No known key found for this signature in database
GPG key ID: 7ECC932F8B2C731E
2 changed files with 15 additions and 12 deletions

View file

@ -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(),

View file

@ -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,
}