1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
/*! rust-memcache is a [memcached](https://memcached.org/) client written in pure rust. # Install: The crate is called `memcache` and you can depend on it via cargo: ```ini [dependencies] memcache = "*" ``` # Features: - <input type="checkbox" disabled checked /> All memcached supported protocols - <input type="checkbox" disabled checked /> Binary protocol - <input type="checkbox" disabled checked /> ASCII protocol - <input type="checkbox" disabled checked /> All memcached supported connections - <input type="checkbox" disabled checked /> TCP connection - <input type="checkbox" disabled checked /> UDP connection - <input type="checkbox" disabled checked/> UNIX Domain socket connection - <input type="checkbox" disabled checked/> TLS connection - <input type="checkbox" disabled /> Encodings - <input type="checkbox" disabled checked /> Typed interface - <input type="checkbox" disabled /> Automatically compress - <input type="checkbox" disabled /> Automatically serialize to JSON / msgpack etc - <input type="checkbox" disabled checked /> Mutiple server support with custom key hash algorithm - <input type="checkbox" disabled checked /> Authority - <input type="checkbox" disabled checked /> Binary protocol (plain SASL authority) - <input type="checkbox" disabled checked /> ASCII protocol # Basic usage: ```rust // create connection with to memcached server node: let client = memcache::connect("memcache://127.0.0.1:12345?timeout=10&tcp_nodelay=true").unwrap(); // flush the database: client.flush().unwrap(); // set a string value: client.set("foo", "bar", 0).unwrap(); // retrieve from memcached: let value: Option<String> = client.get("foo").unwrap(); assert_eq!(value, Some(String::from("bar"))); assert_eq!(value.unwrap(), "bar"); // prepend, append: client.prepend("foo", "foo").unwrap(); client.append("foo", "baz").unwrap(); let value: String = client.get("foo").unwrap().unwrap(); assert_eq!(value, "foobarbaz"); // delete value: client.delete("foo").unwrap(); // using counter: client.set("counter", 40, 0).unwrap(); client.increment("counter", 2).unwrap(); let answer: i32 = client.get("counter").unwrap().unwrap(); assert_eq!(answer, 42); ``` !*/ #![cfg_attr(feature = "cargo-clippy", allow(clippy::needless_return))] extern crate byteorder; extern crate enum_dispatch; #[cfg(feature = "tls")] extern crate openssl; extern crate r2d2; extern crate rand; extern crate url; mod client; mod connection; mod error; mod protocol; mod stream; mod value; pub use client::{Client, Connectable}; pub use error::{ClientError, CommandError, MemcacheError, ServerError}; pub use r2d2::Error; pub use value::{FromMemcacheValue, FromMemcacheValueExt, ToMemcacheValue}; /// Create a memcached client instance and connect to memcached server. /// /// Example: /// /// ```rust /// let client = memcache::connect("memcache://localhost:12345").unwrap(); /// ``` pub fn connect<C: Connectable>(target: C) -> Result<Client, MemcacheError> { Client::connect(target) }