# Description The second `Value` is redundant and will consume five extra bytes on each transmission of a custom value to/from a plugin. # User-Facing Changes This is a breaking change to the plugin protocol. The [example in the protocol reference](https://www.nushell.sh/contributor-book/plugin_protocol_reference.html#value) becomes ```json { "Custom": { "val": { "type": "PluginCustomValue", "name": "database", "data": [36, 190, 127, 40, 12, 3, 46, 83], "notify_on_drop": true }, "span": { "start": 320, "end": 340 } } } ``` instead of ```json { "CustomValue": { ... } } ``` # After Submitting Update plugin protocol reference
38 lines
913 B
Rust
38 lines
913 B
Rust
use super::NuWhen;
|
|
use nu_protocol::{CustomValue, ShellError, Span, Value};
|
|
|
|
// CustomValue implementation for NuDataFrame
|
|
impl CustomValue for NuWhen {
|
|
fn typetag_name(&self) -> &'static str {
|
|
"when"
|
|
}
|
|
|
|
fn typetag_deserialize(&self) {
|
|
unimplemented!("typetag_deserialize")
|
|
}
|
|
|
|
fn clone_value(&self, span: nu_protocol::Span) -> Value {
|
|
let cloned = self.clone();
|
|
|
|
Value::custom(Box::new(cloned), span)
|
|
}
|
|
|
|
fn type_name(&self) -> String {
|
|
self.typetag_name().to_string()
|
|
}
|
|
|
|
fn to_base_value(&self, span: Span) -> Result<Value, ShellError> {
|
|
let val: String = match self {
|
|
NuWhen::Then(_) => "whenthen".into(),
|
|
NuWhen::ChainedThen(_) => "whenthenthen".into(),
|
|
};
|
|
|
|
let value = Value::string(val, span);
|
|
Ok(value)
|
|
}
|
|
|
|
fn as_any(&self) -> &dyn std::any::Any {
|
|
self
|
|
}
|
|
}
|