Skip to main content

forest/shim/
runtime.rs

1// Copyright 2019-2026 ChainSafe Systems
2// SPDX-License-Identifier: Apache-2.0, MIT
3
4use super::actors::convert::*;
5use fil_actors_shared::{
6    v9::runtime::Policy as PolicyV9, v10::runtime::Policy as PolicyV10,
7    v11::runtime::Policy as PolicyV11, v12::runtime::Policy as PolicyV12,
8    v13::runtime::Policy as PolicyV13, v14::runtime::Policy as PolicyV14,
9    v15::runtime::Policy as PolicyV15, v16::runtime::Policy as PolicyV16,
10    v17::runtime::Policy as PolicyV17,
11};
12use serde::{Deserialize, Serialize};
13
14/// Shim wrapper around the latest policy version with cross-version conversions.
15#[derive(
16    Debug,
17    Clone,
18    Default,
19    Eq,
20    PartialEq,
21    Serialize,
22    Deserialize,
23    derive_more::Deref,
24    derive_more::DerefMut,
25    derive_more::From,
26    derive_more::Into,
27)]
28#[serde(transparent)]
29pub struct Policy(pub PolicyV13);
30
31impl From<&Policy> for PolicyV9 {
32    fn from(Policy(policy): &Policy) -> Self {
33        from_policy_v13_to_v9(policy)
34    }
35}
36
37impl From<&Policy> for PolicyV10 {
38    fn from(Policy(policy): &Policy) -> Self {
39        from_policy_v13_to_v10(policy)
40    }
41}
42
43impl From<&Policy> for PolicyV11 {
44    fn from(Policy(policy): &Policy) -> Self {
45        from_policy_v13_to_v11(policy)
46    }
47}
48
49impl From<&Policy> for PolicyV12 {
50    fn from(Policy(policy): &Policy) -> Self {
51        from_policy_v13_to_v12(policy)
52    }
53}
54
55impl From<&Policy> for PolicyV13 {
56    fn from(Policy(policy): &Policy) -> Self {
57        policy.clone()
58    }
59}
60
61impl From<&Policy> for PolicyV14 {
62    fn from(Policy(policy): &Policy) -> Self {
63        from_policy_v13_to_v14(policy)
64    }
65}
66
67impl From<&Policy> for PolicyV15 {
68    fn from(Policy(policy): &Policy) -> Self {
69        from_policy_v13_to_v15(policy)
70    }
71}
72
73impl From<&Policy> for PolicyV16 {
74    fn from(Policy(policy): &Policy) -> Self {
75        from_policy_v13_to_v16(policy)
76    }
77}
78
79impl From<&Policy> for PolicyV17 {
80    fn from(Policy(policy): &Policy) -> Self {
81        from_policy_v13_to_v17(policy)
82    }
83}