| 880 | } |
| 881 | #[inline] |
| 882 | fn resolve(&self, vm: &VirtualMachine) -> PyResult<&ResolvedError> { |
| 883 | if let Some(val) = self.resolved.get() { |
| 884 | return Ok(val); |
| 885 | } |
| 886 | let errors_str = self.errors.as_str(); |
| 887 | let val = if let Ok(standard) = errors_str.parse() { |
| 888 | ResolvedError::Standard(standard) |
| 889 | } else { |
| 890 | vm.state |
| 891 | .codec_registry |
| 892 | .lookup_error(errors_str, vm) |
| 893 | .map(ResolvedError::Handler)? |
| 894 | }; |
| 895 | let _ = self.resolved.set(val); |
| 896 | Ok(self.resolved.get().unwrap()) |
| 897 | } |
| 898 | } |
| 899 | impl StrBuffer for PyStrRef { |
| 900 | fn is_compatible_with(&self, kind: StrKind) -> bool { |