mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Rewrite From/TryFrom conversions on generated types to avoid future orphan rule violations (#34554)
* script: Add traits to allow converting between types that are not defined in the script crate. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * script: Rewrite all From/TryFrom implementations on generated WebIDL types to use new Convert/TryConvert traits. Signed-off-by: Josh Matthews <josh@joshmatthews.net> --------- Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
parent
e10e989abb
commit
e0cbab2fbb
40 changed files with 439 additions and 380 deletions
21
components/script/conversions.rs
Normal file
21
components/script/conversions.rs
Normal file
|
@ -0,0 +1,21 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/// A version of the Into<T> trait from the standard library that can be used
|
||||
/// to convert between two types that are not defined in the script crate.
|
||||
/// This is intended to be used on dict/enum types generated from WebIDL once
|
||||
/// those types are moved out of the script crate.
|
||||
pub trait Convert<T> {
|
||||
fn convert(self) -> T;
|
||||
}
|
||||
|
||||
/// A version of the TryInto<T> trait from the standard library that can be used
|
||||
/// to convert between two types that are not defined in the script crate.
|
||||
/// This is intended to be used on dict/enum types generated from WebIDL once
|
||||
/// those types are moved out of the script crate.
|
||||
pub trait TryConvert<T> {
|
||||
type Error;
|
||||
|
||||
fn try_convert(self) -> Result<T, Self::Error>;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue