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
use std::convert::From; use binding::string::{from_value, new}; use types::Value; use super::traits::Object; /// `String` pub struct RString { value: Value } impl RString { /// Creates a new instance of Ruby `String` containing given `string`. /// /// # Examples /// /// ``` /// use ruru::{RString, VM}; /// # VM::init(); /// /// let string = RString::new("Hello, World!"); /// /// assert_eq!(string.to_string(), "Hello, World!".to_string()); /// ``` /// /// Ruby: /// /// ```ruby /// str = 'Hello, World!' /// /// str == 'Hello, World!' /// ``` pub fn new(string: &str) -> Self { RString { value: new(string) } } /// Retrieves underlying Rust `String` from Ruby `String` object. /// /// # Examples /// /// ``` /// use ruru::{RString, VM}; /// # VM::init(); /// /// let string = RString::new("Hello, World!"); /// /// assert_eq!(string.to_string(), "Hello, World!".to_string()); /// ``` /// /// Ruby: /// /// ```ruby /// str = 'Hello, World!' /// /// str == 'Hello, World!' /// ``` pub fn to_string(&self) -> String { from_value(self.value) } } impl From<Value> for RString { fn from(value: Value) -> Self { RString { value: value } } } impl Object for RString { fn value(&self) -> Value { self.value } }