From 646833d3ec1cbdb7f9eccb1bd4b6d02cb2a39f59 Mon Sep 17 00:00:00 2001 From: holger krekel Date: Tue, 24 Sep 2019 20:35:27 +0200 Subject: [PATCH] remove phf crate macro usage: it introduced 7 deps and is really an optimization if you very large (100K+) tables -- we have 10 entries or so and it's called once per message. Let's not introduce crates just because we can -- it increases compile time and in the phf case also introduced a github dependency (for whatever reason -- don't want to know ;) --- Cargo.lock | 73 -------------------------------------------------- Cargo.toml | 1 - src/message.rs | 33 ++++++++++++----------- 3 files changed, 17 insertions(+), 90 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 244a45aca..4fbac001a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -508,7 +508,6 @@ dependencies = [ "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pgp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "phf 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)", "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_env_logger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1601,46 +1600,6 @@ dependencies = [ "x25519-dalek 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "phf" -version = "0.7.24" -source = "git+https://github.com/sfackler/rust-phf?rev=0d00821#0d0082178568036736bb6d51cb91f95ca5a616c3" -dependencies = [ - "phf_macros 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)", - "phf_shared 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)", - "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "phf_generator" -version = "0.7.24" -source = "git+https://github.com/sfackler/rust-phf?rev=0d00821#0d0082178568036736bb6d51cb91f95ca5a616c3" -dependencies = [ - "phf_shared 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)", - "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "phf_macros" -version = "0.7.24" -source = "git+https://github.com/sfackler/rust-phf?rev=0d00821#0d0082178568036736bb6d51cb91f95ca5a616c3" -dependencies = [ - "phf_generator 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)", - "phf_shared 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)", - "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "phf_shared" -version = "0.7.24" -source = "git+https://github.com/sfackler/rust-phf?rev=0d00821#0d0082178568036736bb6d51cb91f95ca5a616c3" -dependencies = [ - "siphasher 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "pkg-config" version = "0.3.16" @@ -1672,16 +1631,6 @@ dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "proc-macro2" version = "0.4.30" @@ -1835,7 +1784,6 @@ dependencies = [ "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1933,15 +1881,6 @@ dependencies = [ "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rand_pcg" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "rand_xorshift" version = "0.1.1" @@ -2273,11 +2212,6 @@ dependencies = [ "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "siphasher" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "skeptic" version = "0.13.4" @@ -3086,15 +3020,10 @@ dependencies = [ "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" "checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" "checksum pgp 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bb80b37b7debf9a98dc0caca3ed40ddf1d383691208763d0458df0b91521020f" -"checksum phf 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)" = "" -"checksum phf_generator 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)" = "" -"checksum phf_macros 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)" = "" -"checksum phf_shared 0.7.24 (git+https://github.com/sfackler/rust-phf?rev=0d00821)" = "" "checksum pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "72d5370d90f49f70bd033c3d75e87fc529fbfff9d6f7cccef07d6170079d91ea" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" "checksum pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" "checksum pretty_env_logger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "717ee476b1690853d222af4634056d830b5197ffd747726a9a1eee6da9f49074" -"checksum proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e688f31d92ffd7c1ddc57a1b4e6d773c0f2a14ee437a4b0a4f5a69c80eb221c8" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" "checksum proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afdc77cc74ec70ed262262942ebb7dac3d479e9e5cfa2da1841c0806f6cdabcc" "checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f" @@ -3121,7 +3050,6 @@ dependencies = [ "checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -"checksum rand_pcg 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e196346cbbc5c70c77e7b4926147ee8e383a38ee4d15d58a08098b169e492b6" "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" @@ -3156,7 +3084,6 @@ dependencies = [ "checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" "checksum sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d" "checksum sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" -"checksum siphasher 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "83da420ee8d1a89e640d0948c646c1c088758d3a3c538f943bfa97bdac17929d" "checksum skeptic 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d6fb8ed853fdc19ce09752d63f3a2e5b5158aeb261520cd75eb618bd60305165" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum slice-deque 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ffddf594f5f597f63533d897427a570dbaa9feabaaa06595b74b71b7014507d7" diff --git a/Cargo.toml b/Cargo.toml index 5bb234b3d..ed04bc685 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,6 @@ pgp = { version = "0.2", default-features = false } hex = "0.3.2" sha2 = "0.8.0" rand = "0.6.5" -phf = { git = "https://github.com/sfackler/rust-phf", rev = "0d00821", features = ["macros"] } smallvec = "0.6.9" reqwest = "0.9.15" num-derive = "0.2.5" diff --git a/src/message.rs b/src/message.rs index 19b525105..3395bd1a6 100644 --- a/src/message.rs +++ b/src/message.rs @@ -3,7 +3,6 @@ use std::ptr; use deltachat_derive::{FromSql, ToSql}; use libc::{free, strcmp}; -use phf::phf_map; use crate::chat::{self, Chat}; use crate::constants::*; @@ -674,22 +673,24 @@ pub fn get_msg_info(context: &Context, msg_id: u32) -> String { } pub fn guess_msgtype_from_suffix(path: &Path) -> Option<(Viewtype, &str)> { - static KNOWN: phf::Map<&'static str, (Viewtype, &'static str)> = phf_map! { - "mp3" => (Viewtype::Audio, "audio/mpeg"), - "aac" => (Viewtype::Audio, "audio/aac"), - "mp4" => (Viewtype::Video, "video/mp4"), - "jpg" => (Viewtype::Image, "image/jpeg"), - "jpeg" => (Viewtype::Image, "image/jpeg"), - "jpe" => (Viewtype::Image, "image/jpeg"), - "png" => (Viewtype::Image, "image/png"), - "webp" => (Viewtype::Image, "image/webp"), - "gif" => (Viewtype::Gif, "image/gif"), - "vcf" => (Viewtype::File, "text/vcard"), - "vcard" => (Viewtype::File, "text/vcard"), - }; let extension: &str = &path.extension()?.to_str()?.to_lowercase(); - - KNOWN.get(extension).map(|x| *x) + let info = match extension { + "mp3" => (Viewtype::Audio, "audio/mpeg"), + "aac" => (Viewtype::Audio, "audio/aac"), + "mp4" => (Viewtype::Video, "video/mp4"), + "jpg" => (Viewtype::Image, "image/jpeg"), + "jpeg" => (Viewtype::Image, "image/jpeg"), + "jpe" => (Viewtype::Image, "image/jpeg"), + "png" => (Viewtype::Image, "image/png"), + "webp" => (Viewtype::Image, "image/webp"), + "gif" => (Viewtype::Gif, "image/gif"), + "vcf" => (Viewtype::File, "text/vcard"), + "vcard" => (Viewtype::File, "text/vcard"), + _ => { + return None; + } + }; + Some(info) } pub fn get_mime_headers(context: &Context, msg_id: u32) -> Option {