mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 23:58:06 +02:00
Replace raw usize IDs with new types (#13832)
# Description In this PR I replaced most of the raw usize IDs with [newtypes](https://doc.rust-lang.org/rust-by-example/generics/new_types.html). Some other IDs already started using new types and in this PR I did not want to touch them. To make the implementation less repetitive, I made use of a generic `Id<T>` with marker structs. If this lands I would try to move make other IDs also in this pattern. Also at some places I needed to use `cast`, I'm not sure if the type was incorrect and therefore casting not needed or if actually different ID types intermingle sometimes. # User-Facing Changes Probably few, if you got a `DeclId` via a function and placed it later again it will still work.
This commit is contained in:
@ -627,7 +627,7 @@ pub enum EngineCallResponse<D> {
|
||||
PipelineData(D),
|
||||
Config(SharedCow<Config>),
|
||||
ValueMap(HashMap<String, Value>),
|
||||
Identifier(usize),
|
||||
Identifier(DeclId),
|
||||
}
|
||||
|
||||
impl<D> EngineCallResponse<D> {
|
||||
|
@ -1,7 +1,7 @@
|
||||
use crate::test_util::{expected_test_custom_value, test_plugin_custom_value, TestCustomValue};
|
||||
|
||||
use super::PluginCustomValue;
|
||||
use nu_protocol::{engine::Closure, record, CustomValue, ShellError, Span, Value};
|
||||
use nu_protocol::{engine::Closure, record, BlockId, CustomValue, ShellError, Span, Value, VarId};
|
||||
|
||||
fn check_record_custom_values(
|
||||
val: &Value,
|
||||
@ -156,8 +156,11 @@ fn serialize_in_list() -> Result<(), ShellError> {
|
||||
fn serialize_in_closure() -> Result<(), ShellError> {
|
||||
let orig_custom_val = Value::test_custom_value(Box::new(TestCustomValue(24)));
|
||||
let mut val = Value::test_closure(Closure {
|
||||
block_id: 0,
|
||||
captures: vec![(0, orig_custom_val.clone()), (1, orig_custom_val.clone())],
|
||||
block_id: BlockId::new(0),
|
||||
captures: vec![
|
||||
(VarId::new(0), orig_custom_val.clone()),
|
||||
(VarId::new(1), orig_custom_val.clone()),
|
||||
],
|
||||
});
|
||||
PluginCustomValue::serialize_custom_values_in(&mut val)?;
|
||||
|
||||
@ -239,8 +242,11 @@ fn deserialize_in_list() -> Result<(), ShellError> {
|
||||
fn deserialize_in_closure() -> Result<(), ShellError> {
|
||||
let orig_custom_val = Value::test_custom_value(Box::new(test_plugin_custom_value()));
|
||||
let mut val = Value::test_closure(Closure {
|
||||
block_id: 0,
|
||||
captures: vec![(0, orig_custom_val.clone()), (1, orig_custom_val.clone())],
|
||||
block_id: BlockId::new(0),
|
||||
captures: vec![
|
||||
(VarId::new(0), orig_custom_val.clone()),
|
||||
(VarId::new(1), orig_custom_val.clone()),
|
||||
],
|
||||
});
|
||||
PluginCustomValue::deserialize_custom_values_in(&mut val)?;
|
||||
|
||||
|
Reference in New Issue
Block a user