rust-simplicity
rust-simplicity copied to clipboard
`case` nodes should be replaced with `assertl` or `assertr` if their left or right branches, respectively, are not used during execution. Pruning should happen during finalization. Pruning is non-trivial in...
The current Policy enum only supports block based constructions (it's `u16` right now). We should also support time based constructions as they are more natural in smart contracts.
We need conversions from `Value` to 32 and 64-byte arrays, and maybe other targets. The current API focuses on converting to `Value`. See #76
We might be able to replace `TypeName` with lazy const / static `Type`s. This would be useful, since `TypeName` exists as a hack to generate `Type`s on demand. Similarly, we...
Because the constructors of `Value` return `Arc`, it is impossible to derive `From` implementations in a straightforward way. ``` impl From for Arc { | ^^^^^--------^^^^^---------- | | | |...
8eeab8f2e6dc61eba299e57b282ecf677a9bce0a: Would it make sense to introduce a `ShallowClone` trait with `Clone` as a subtrait? `ShallowClone` would be almost like a marker trait and it would provide the method `shallow_clone`...
When we construct a WitnessNode using `WitnessNode::witness` we can provide a witness. However, this constructor passes through to `types::Arrow::witness(NoWitness)`; i.e., it does not constrain the target type of the witness...
We've done a great job eliminating recursion throughout the library, aside from in the typechecker. One subtle place is in the default `Drop` impl on `Node`. This should be manually...
Consider the following unit test ```rust #[test] fn inference_failure_type_pollution() { let unit1 = Arc::::unit(); // A -> 1a let unit2 = Arc::::unit(); // B -> 1b // Constructing a disconnect...
Required for https://github.com/ElementsProject/elements-miniscript/pull/90