[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [tor/master] rust: Refactor protover::is_supported_here().



commit 35b86a12e60a8696b512261e96dc6f1c75ecebfc
Author: Isis Lovecruft <isis@xxxxxxxxxxxxxx>
Date:   Wed Mar 21 02:09:04 2018 +0000

    rust: Refactor protover::is_supported_here().
    
    This changes `protover::is_supported_here()` to be aware of new datatypes
    (e.g. don't call `.0` on things which are no longer tuple structs) and also
    changes the method signature to take borrows, making it faster, threadable, and
    easier to read (i.e. the caller can know from reading the function signature
    that the function won't mutate values passed into it).
    
     * CHANGE the `protover::is_supported_here()` function to take borrows.
     * REFACTOR the `protover::is_supported_here()` function to be aware of new
       datatypes.
     * FIXES part of #24031: https://bugs.torproject.org/24031
---
 src/rust/protover/protover.rs | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/src/rust/protover/protover.rs b/src/rust/protover/protover.rs
index 6f1ad768e..247166c23 100644
--- a/src/rust/protover/protover.rs
+++ b/src/rust/protover/protover.rs
@@ -590,26 +590,25 @@ impl ProtoverVote {
 ///
 /// # Examples
 /// ```
-/// use protover::*;
+/// use protover::is_supported_here;
+/// use protover::Protocol;
 ///
-/// let is_supported = is_supported_here(Proto::Link, 10);
+/// let is_supported = is_supported_here(&Protocol::Link, &10);
 /// assert_eq!(false, is_supported);
 ///
-/// let is_supported = is_supported_here(Proto::Link, 1);
+/// let is_supported = is_supported_here(&Protocol::Link, &1);
 /// assert_eq!(true, is_supported);
 /// ```
-pub fn is_supported_here(proto: Proto, vers: Version) -> bool {
-    let currently_supported = match SupportedProtocols::tor_supported() {
-        Ok(result) => result.0,
+pub fn is_supported_here(proto: &Protocol, vers: &Version) -> bool {
+    let currently_supported: ProtoEntry = match ProtoEntry::supported() {
+        Ok(result) => result,
         Err(_) => return false,
     };
-
-    let supported_versions = match currently_supported.get(&proto) {
+    let supported_versions = match currently_supported.get(proto) {
         Some(n) => n,
         None => return false,
     };
-
-    supported_versions.0.contains(&vers)
+    supported_versions.contains(vers)
 }
 
 /// Older versions of Tor cannot infer their own subprotocols



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits