pub struct Relation(/* private fields */);
Expand description
A node in the syntax tree representing a $ast
Implementations§
Source§impl Relation
impl Relation
Sourcepub fn new(
name: &str,
version_constraint: Option<(VersionConstraint, Version)>,
) -> Self
pub fn new( name: &str, version_constraint: Option<(VersionConstraint, Version)>, ) -> Self
Create a new relation
§Arguments
name
- The name of the packageversion_constraint
- The version constraint and version to use
§Example
use debian_control::lossless::relations::{Relation};
use debian_control::relations::VersionConstraint;
let relation = Relation::new("samba", Some((VersionConstraint::GreaterThanEqual, "2.0".parse().unwrap())));
assert_eq!(relation.to_string(), "samba (>= 2.0)");
Sourcepub fn wrap_and_sort(&self) -> Self
pub fn wrap_and_sort(&self) -> Self
Wrap and sort this relation
§Example
use debian_control::lossless::relations::Relation;
let relation = " samba ( >= 2.0) ".parse::<Relation>().unwrap();
assert_eq!(relation.wrap_and_sort().to_string(), "samba (>= 2.0)");
Sourcepub fn simple(name: &str) -> Self
pub fn simple(name: &str) -> Self
Create a new simple relation, without any version constraints.
§Example
use debian_control::lossless::relations::Relation;
let relation = Relation::simple("samba");
assert_eq!(relation.to_string(), "samba");
Sourcepub fn drop_constraint(&mut self) -> bool
pub fn drop_constraint(&mut self) -> bool
Remove the version constraint from the relation.
§Example
use debian_control::lossless::relations::{Relation};
use debian_control::relations::VersionConstraint;
let mut relation = Relation::new("samba", Some((VersionConstraint::GreaterThanEqual, "2.0".parse().unwrap())));
relation.drop_constraint();
assert_eq!(relation.to_string(), "samba");
Sourcepub fn name(&self) -> String
pub fn name(&self) -> String
Return the name of the package in the relation.
§Example
use debian_control::lossless::relations::Relation;
let relation = Relation::simple("samba");
assert_eq!(relation.name(), "samba");
Sourcepub fn archqual(&self) -> Option<String>
pub fn archqual(&self) -> Option<String>
Return the archqual
§Example
use debian_control::lossless::relations::Relation;
let relation: Relation = "samba:any".parse().unwrap();
assert_eq!(relation.archqual(), Some("any".to_string()));
Sourcepub fn set_archqual(&mut self, archqual: &str)
pub fn set_archqual(&mut self, archqual: &str)
Set the architecture qualifier for this relation.
§Example
use debian_control::lossless::relations::Relation;
let mut relation = Relation::simple("samba");
relation.set_archqual("any");
assert_eq!(relation.to_string(), "samba:any");
Sourcepub fn version(&self) -> Option<(VersionConstraint, Version)>
pub fn version(&self) -> Option<(VersionConstraint, Version)>
Return the version constraint and the version it is constrained to.
Sourcepub fn set_version(
&mut self,
version_constraint: Option<(VersionConstraint, Version)>,
)
pub fn set_version( &mut self, version_constraint: Option<(VersionConstraint, Version)>, )
Set the version constraint for this relation
§Example
use debian_control::lossless::relations::{Relation};
use debian_control::relations::VersionConstraint;
let mut relation = Relation::simple("samba");
relation.set_version(Some((VersionConstraint::GreaterThanEqual, "2.0".parse().unwrap())));
assert_eq!(relation.to_string(), "samba (>= 2.0)");
Sourcepub fn architectures(&self) -> Option<impl Iterator<Item = String> + '_>
pub fn architectures(&self) -> Option<impl Iterator<Item = String> + '_>
Return an iterator over the architectures for this relation
§Example
use debian_control::lossless::relations::Relation;
let relation: Relation = "samba [amd64]".parse().unwrap();
assert_eq!(relation.architectures().unwrap().collect::<Vec<_>>(), vec!["amd64".to_string()]);
Sourcepub fn profiles(&self) -> impl Iterator<Item = Vec<BuildProfile>> + '_
pub fn profiles(&self) -> impl Iterator<Item = Vec<BuildProfile>> + '_
Returns an iterator over the build profiles for this relation
§Example
use debian_control::lossless::relations::{Relation};
use debian_control::relations::{BuildProfile};
let relation: Relation = "samba <!nocheck>".parse().unwrap();
assert_eq!(relation.profiles().collect::<Vec<_>>(), vec![vec![BuildProfile::Disabled("nocheck".to_string())]]);
Sourcepub fn remove(&mut self)
pub fn remove(&mut self)
Remove this relation
§Example
use debian_control::lossless::relations::{Relation,Entry};
let mut entry: Entry = r"python3-dulwich (>= 0.19.0) | python3-urllib3 (<< 1.26.0)".parse().unwrap();
let mut relation = entry.get_relation(0).unwrap();
relation.remove();
assert_eq!(entry.to_string(), "python3-urllib3 (<< 1.26.0)");
Sourcepub fn set_architectures<'a>(
&mut self,
architectures: impl Iterator<Item = &'a str>,
)
pub fn set_architectures<'a>( &mut self, architectures: impl Iterator<Item = &'a str>, )
Set the architectures for this relation
§Example
use debian_control::lossless::relations::Relation;
let mut relation = Relation::simple("samba");
relation.set_architectures(vec!["amd64", "i386"].into_iter());
assert_eq!(relation.to_string(), "samba [amd64 i386]");
Sourcepub fn add_profile(&mut self, profile: &[BuildProfile])
pub fn add_profile(&mut self, profile: &[BuildProfile])
Add a build profile to this relation
§Example
use debian_control::lossless::relations::Relation;
use debian_control::relations::BuildProfile;
let mut relation = Relation::simple("samba");
relation.add_profile(&[BuildProfile::Disabled("nocheck".to_string())]);
assert_eq!(relation.to_string(), "samba <!nocheck>");
Sourcepub fn build(name: &str) -> RelationBuilder
pub fn build(name: &str) -> RelationBuilder
Build a new relation
Trait Implementations§
Source§impl Ord for Relation
impl Ord for Relation
Source§impl PartialOrd for Relation
impl PartialOrd for Relation
impl Eq for Relation
Auto Trait Implementations§
impl Freeze for Relation
impl !RefUnwindSafe for Relation
impl !Send for Relation
impl !Sync for Relation
impl Unpin for Relation
impl !UnwindSafe for Relation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more