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
98
// Buttplug Rust Source Code File - See https://buttplug.io for more info.
//
// Copyright 2016-2019 Nonpolynomial Labs LLC. All rights reserved.
//
// Licensed under the BSD 3-Clause license. See LICENSE file in the project root
// for full license information.

#![crate_type = "lib"]
#![crate_name = "buttplug"]

//! # Buttplug Intimate Sex Toy Control Library
//!
//! [![Patreon donate button](https://img.shields.io/badge/patreon-donate-yellow.svg)](https://www.patreon.com/qdot)
//! [![Github donate button](https://img.shields.io/badge/github-donate-ff69b4.svg)](https://www.github.com/sponsors/qdot)
//! [![Discourse Forum](https://img.shields.io/badge/discourse-forum-blue.svg)](https://metafetish.club)
//! [![Discord](https://img.shields.io/discord/353303527587708932.svg?logo=discord)](https://discord.buttplug.io)
//! [![Twitter](https://img.shields.io/twitter/follow/buttplugio.svg?style=social&logo=twitter)](https://twitter.com/buttplugio)
//!
//! [![Crates.io Version](https://img.shields.io/crates/v/buttplug)](https://crates.io/crates/buttplug)
//! [![Crates.io Downloads](https://img.shields.io/crates/d/buttplug)](https://crates.io/crates/buttplug)
//! [![Crates.io License](https://img.shields.io/crates/l/buttplug)](https://crates.io/crates/buttplug)
//!
//! Welcome to the Buttplug Intimate Sex Toy Control Library.
//!
//! If you're here, we're assuming you know why you're here and will dispense
//! with the "this is what this library is" stuff.
//!
//! If you don't know why you're here, check out [our main
//! website](https://buttplug.io) or [our github
//! repo](https://github.com/buttplugio/buttplug-rs) for more introductory
//! information.
//!
//! ## Requirements
//!
//! buttplug-rs uses async/await heavily, and requires a minimum of Rust 1.39.
//!
//! While we use [async-std](https://async.rs/) internally, buttplug-rs should
//! work with any runtime.
//!
//! ## Currently Implemented Capabilities
//!
//! The library currently contains a complete implementation of the Buttplug
//! Client, which allows connecting to Buttplug Servers (currently written in
//! [C#](https://github.com/buttplugio/buttplug-csharp) and
//! [JS](https://github.com/buttplugio/buttplug-js)), then enumerating and
//! controlling devices after successful connection. There are also connectors
//! included for connecting to servers via Websockets.
//!
//! ## Examples
//!
//! Code examples are available in the [github
//! repo](https://github.com/buttplugio/buttplug-rs/tree/master/buttplug/examples).
//!
//! The [Buttplug Developer
//! Guide](https://buttplug-developer-guide.docs.buttplug.io) may also be
//! useful, though it does not currently have Rust examples.
//!
//! ## Attributes
//!
//! The following attributes are available
//!
//! | Feature | Other Features Used | Description |
//! | --------- | ----------- | ----------- |
//! |  `client` | None | Buttplug client implementation (in-process connection only) |
//! | `server` | None | Buttplug server implementation (in-process connection only) |
//! | `serialize_json` | None | Serde JSON serializer for Buttplug messages, needed for remote connectors |
//! | `client-ws` | `client`,`serialize_json` | Websocket client connector, used to connect clients to remote servers |
//! | `client-ws-ssl` | `client`,`serialize_json` | Websocket client connector with SSL capabilities |
//!
//! Default attributes are `client-ws` and `server`.
//!
//! ## Plans for the Future
//!
//! The next 2 goals are:
//!
//! - Creating an FFI layer so that we can build other language libraries on top
//! of this implementation.
//! - Writing the server portion in Rust.
//!
//! These will be happening simultaneously after the v0.0.2 release.
//!
//! ## Contributing
//!
//! Right now, we mostly need code/API style reviews and feedback. We don't
//! really have any good bite-sized chunks to apportion out on the
//! implementation yet, but one we do, those will be marked "Help Wanted" in our
//! [github issues](https://github.com/buttplugio/buttplug-rs/issues).

#[macro_use]
extern crate buttplug_derive;
#[macro_use]
extern crate log;

#[cfg(feature = "client")]
pub mod client;
pub mod core;
#[cfg(feature = "server")]
pub mod server;