rpgm_common_types/
util.rs

1use ruby_marshal::FromValue;
2use ruby_marshal::FromValueContext;
3use ruby_marshal::FromValueError;
4use ruby_marshal::StringValue;
5use ruby_marshal::Value;
6use ruby_marshal::ValueArena;
7use ruby_marshal::ValueHandle;
8
9pub fn ruby_string2string(ctx: &FromValueContext, value: &Value) -> Result<String, FromValueError> {
10    let value: &StringValue = FromValue::from_value(ctx, value)?;
11    let value = value.value();
12    let value = std::str::from_utf8(value)
13        .map_err(FromValueError::new_other)?
14        .to_string();
15
16    Ok(value)
17}
18
19pub fn string2ruby_string(
20    s: String,
21    arena: &mut ValueArena,
22) -> Result<ValueHandle, ruby_marshal::IntoValueError> {
23    Ok(arena.create_string(s.into()).into())
24}