creusot_contracts/std/
fmt.rs1use crate::prelude::*;
2#[cfg(creusot)]
3use std::fmt::{Arguments, Debug, Formatter, Result};
4
5extern_spec! {
6 mod core {
7 mod fmt {
8 impl<'a> Formatter<'a> {
9 #[requires(true)]
10 fn write_str(&mut self, data: &str) -> Result;
11
12 #[requires(true)]
13 fn debug_struct_field1_finish<'b>(
14 &'b mut self,
15 name: &str,
16 name1: &str,
17 value1: &dyn Debug,
18 ) -> Result;
19
20 #[requires(true)]
21 fn debug_struct_field2_finish<'b>(
22 &'b mut self,
23 name: &str,
24 name1: &str,
25 value1: &dyn Debug,
26 name2: &str,
27 value2: &dyn Debug,
28 ) -> Result;
29
30 #[requires(true)]
31 fn debug_struct_field3_finish<'b>(
32 &'b mut self,
33 name: &str,
34 name1: &str,
35 value1: &dyn Debug,
36 name2: &str,
37 value2: &dyn Debug,
38 name3: &str,
39 value3: &dyn Debug,
40 ) -> Result;
41
42 #[requires(true)]
43 fn debug_struct_field4_finish<'b>(
44 &'b mut self,
45 name: &str,
46 name1: &str,
47 value1: &dyn Debug,
48 name2: &str,
49 value2: &dyn Debug,
50 name3: &str,
51 value3: &dyn Debug,
52 name4: &str,
53 value4: &dyn Debug,
54 ) -> Result;
55
56 #[requires(true)]
57 fn debug_struct_field5_finish<'b>(
58 &'b mut self,
59 name: &str,
60 name1: &str,
61 value1: &dyn Debug,
62 name2: &str,
63 value2: &dyn Debug,
64 name3: &str,
65 value3: &dyn Debug,
66 name4: &str,
67 value4: &dyn Debug,
68 name5: &str,
69 value5: &dyn Debug,
70 ) -> Result;
71
72 #[requires(true)]
73 fn debug_struct_fields_finish<'b>(
74 &'b mut self,
75 name: &str,
76 names: &[&str],
77 values: &[&dyn Debug],
78 ) -> Result;
79
80 #[requires(true)]
81 fn debug_tuple_field1_finish<'b>(
82 &'b mut self,
83 name: &str,
84 value1: &dyn Debug,
85 ) -> Result;
86
87 #[requires(true)]
88 fn debug_tuple_field2_finish<'b>(
89 &'b mut self,
90 name: &str,
91 value1: &dyn Debug,
92 value2: &dyn Debug,
93 ) -> Result;
94
95 #[requires(true)]
96 fn debug_tuple_field3_finish<'b>(
97 &'b mut self,
98 name: &str,
99 value1: &dyn Debug,
100 value2: &dyn Debug,
101 value3: &dyn Debug,
102 ) -> Result;
103
104 #[requires(true)]
105 fn debug_tuple_field4_finish<'b>(
106 &'b mut self,
107 name: &str,
108 value1: &dyn Debug,
109 value2: &dyn Debug,
110 value3: &dyn Debug,
111 value4: &dyn Debug,
112 ) -> Result;
113
114 #[requires(true)]
115 fn debug_tuple_field5_finish<'b>(
116 &'b mut self,
117 name: &str,
118 value1: &dyn Debug,
119 value2: &dyn Debug,
120 value3: &dyn Debug,
121 value4: &dyn Debug,
122 value5: &dyn Debug,
123 ) -> Result;
124
125 #[requires(true)]
126 fn debug_tuple_fields_finish<'b>(
127 &'b mut self,
128 name: &str,
129 values: &[&dyn Debug],
130 ) -> Result;
131 }
132 }
133 }
134}
135
136extern_spec! {
137 mod core {
138 mod fmt {
139 impl<'a> Arguments<'a> {
140 #[check(ghost)]
141 #[requires(N <= 1usize)]
142 fn new_const<const N: usize>(pieces: &'a [&'static str; N]) -> Self;
143 }
144 }
145 }
146}