# [−]Struct smithay_client_toolkit::data_device::DndAction

    pub struct DndAction { /* fields omitted */ }

drag and drop actions

This is a bitmask of the available/preferred actions in a drag-and-drop operation.

In the compositor, the selected action is a result of matching the actions offered by the source and destination sides. "action" events with a "none" action will be sent to both source and destination if there is no match. All further checks will effectively happen on (source actions ∩ destination actions).

In addition, compositors may also pick different actions in reaction to key modifiers being pressed. One common design that is used in major toolkits (and the behavior recommended for compositors) is:

- If no modifiers are pressed, the first match (in bit order) will be used.
- Pressing Shift selects "move", if enabled in the mask.
- Pressing Control selects "copy", if enabled in the mask.

Behavior beyond that is considered implementation-dependent. Compositors may for example bind other modifiers (like Alt/Meta) or drags initiated with other buttons than BTN_LEFT to specific actions (e.g. "ask").

## Methods

### `impl DndAction`[src]

#### `pub fn from_raw(n: u32) -> Option<DndAction>`[src]

#### `pub fn to_raw(&self) -> u32`[src]

### `impl DndAction`

#### `pub const None: DndAction`

no action

#### `pub const Copy: DndAction`

copy action

#### `pub const Move: DndAction`

move action

#### `pub const Ask: DndAction`

ask action

#### `pub const fn empty() -> DndAction`

Returns an empty set of flags

#### `pub const fn all() -> DndAction`

Returns the set containing all flags.

#### `pub const fn bits(&self) -> u32`

Returns the raw value of the flags currently stored.

#### `pub fn from_bits(bits: u32) -> Option<DndAction>`

Convert from underlying bit representation, unless that representation contains bits that do not correspond to a flag.

#### `pub const fn from_bits_truncate(bits: u32) -> DndAction`

Convert from underlying bit representation, dropping any bits that do not correspond to flags.

#### `pub const fn is_empty(&self) -> bool`

Returns `true` if no flags are currently stored.

#### `pub const fn is_all(&self) -> bool`

Returns `true` if all flags are currently set.

#### `pub const fn intersects(&self, other: DndAction) -> bool`

Returns `true` if there are flags common to both `self` and `other`.

#### `pub const fn contains(&self, other: DndAction) -> bool`

Returns `true` all of the flags in `other` are contained within `self`.

#### `pub fn insert(&mut self, other: DndAction)`

Inserts the specified flags in-place.

#### `pub fn remove(&mut self, other: DndAction)`

Removes the specified flags in-place.

#### `pub fn toggle(&mut self, other: DndAction)`

Toggles the specified flags in-place.

#### `pub fn set(&mut self, other: DndAction, value: bool)`

Inserts or removes the specified flags depending on the passed value.

## Trait Implementations

### `impl Extend<DndAction> for DndAction`

#### `fn extend<T>(&mut self, iterator: T) where
T: IntoIterator<Item = DndAction>,`

Extends a collection with the contents of an iterator. Read more

### `impl BitXor<DndAction> for DndAction`

#### `type Output = DndAction`

The resulting type after applying the `^` operator.

#### `fn bitxor(self, other: DndAction) -> DndAction`

Returns the left flags, but with all the right flags toggled.

### `impl Not for DndAction`

#### `type Output = DndAction`

The resulting type after applying the `!` operator.

#### `fn not(self) -> DndAction`

Returns the complement of this set of flags.

### `impl BitAndAssign<DndAction> for DndAction`

#### `fn bitand_assign(&mut self, other: DndAction)`

Disables all flags disabled in the set.

### `impl Debug for DndAction`

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

Formats the value using the given formatter. Read more

### `impl Clone for DndAction`

#### `fn clone(&self) -> DndAction`

Returns a copy of the value. Read more

#### `fn clone_from(&mut self, source: &Self)`1.0.0[src]

Performs copy-assignment from `source`. Read more

### `impl Sub<DndAction> for DndAction`

#### `type Output = DndAction`

The resulting type after applying the `-` operator.

#### `fn sub(self, other: DndAction) -> DndAction`

Returns the set difference of the two sets of flags.

### `impl Ord for DndAction`

#### `fn cmp(&self, other: &DndAction) -> Ordering`

This method returns an `Ordering` between `self` and `other`. Read more

#### `fn max(self, other: Self) -> Self` 1.21.0[src]

Compares and returns the maximum of two values. Read more

#### `fn min(self, other: Self) -> Self` 1.21.0[src]

Compares and returns the minimum of two values. Read more

#### `fn clamp(self, min: Self, max: Self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`clamp`)

Restrict a value to a certain interval. Read more

### `impl Binary for DndAction`

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

Formats the value using the given formatter.

### `impl FromIterator<DndAction> for DndAction`

#### `fn from_iter<T>(iterator: T) -> DndAction where
T: IntoIterator<Item = DndAction>,`

Creates a value from an iterator. Read more

### `impl Octal for DndAction`

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

Formats the value using the given formatter.

### `impl BitAnd<DndAction> for DndAction`

#### `type Output = DndAction`

The resulting type after applying the `&` operator.

#### `fn bitand(self, other: DndAction) -> DndAction`

Returns the intersection between the two sets of flags.

### `impl Copy for DndAction`

### `impl BitXorAssign<DndAction> for DndAction`

#### `fn bitxor_assign(&mut self, other: DndAction)`

Toggles the set of flags.

### `impl BitOrAssign<DndAction> for DndAction`

#### `fn bitor_assign(&mut self, other: DndAction)`

Adds the set of flags.

### `impl SubAssign<DndAction> for DndAction`

#### `fn sub_assign(&mut self, other: DndAction)`

Disables all flags enabled in the set.

### `impl BitOr<DndAction> for DndAction`

#### `type Output = DndAction`

The resulting type after applying the `|` operator.

#### `fn bitor(self, other: DndAction) -> DndAction`

Returns the union of the two sets of flags.

### `impl Eq for DndAction`

### `impl LowerHex for DndAction`

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

Formats the value using the given formatter.

### `impl UpperHex for DndAction`

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`

Formats the value using the given formatter.

### `impl PartialEq<DndAction> for DndAction`

#### `fn eq(&self, other: &DndAction) -> bool`

This method tests for `self` and `other` values to be equal, and is used by `==`. Read more

#### `fn ne(&self, other: &DndAction) -> bool`

This method tests for `!=`.

### `impl PartialOrd<DndAction> for DndAction`

#### `fn partial_cmp(&self, other: &DndAction) -> Option<Ordering>`

This method returns an ordering between `self` and `other` values if one exists. Read more

#### `fn lt(&self, other: &DndAction) -> bool`

This method tests less than (for `self` and `other`) and is used by the `<` operator. Read more

#### `fn le(&self, other: &DndAction) -> bool`

This method tests less than or equal to (for `self` and `other`) and is used by the `<=` operator. Read more

#### `fn gt(&self, other: &DndAction) -> bool`

This method tests greater than (for `self` and `other`) and is used by the `>` operator. Read more

#### `fn ge(&self, other: &DndAction) -> bool`

This method tests greater than or equal to (for `self` and `other`) and is used by the `>=` operator. Read more

### `impl Hash for DndAction`

#### `fn hash<__H>(&self, state: &mut __H) where
__H: Hasher,`

Feeds this value into the given [`Hasher`]. Read more

#### `fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,` 1.3.0[src]

Feeds a slice of this type into the given [`Hasher`]. Read more

## Auto Trait Implementations

### `impl Send for DndAction`

### `impl Unpin for DndAction`

### `impl Sync for DndAction`

### `impl UnwindSafe for DndAction`

### `impl RefUnwindSafe for DndAction`

## Blanket Implementations

### `impl<T> ToOwned for T where
T: Clone,` [src]

#### `type Owned = T`

The resulting type after obtaining ownership.

#### `fn to_owned(&self) -> T`[src]

Creates owned data from borrowed data, usually by cloning. Read more

#### `fn clone_into(&self, target: &mut T)`[src]

🔬 This is a nightly-only experimental API. (`toowned_clone_into`)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

### `impl<T, U> Into<U> for T where
U: From<T>,` [src]

#### `fn into(self) -> U`[src]

Performs the conversion.

### `impl<T> From<T> for T`[src]

#### `fn from(t: T) -> T`[src]

Performs the conversion.

### `impl<T, U> TryFrom<U> for T where
U: Into<T>,` [src]

#### `type Error = Infallible`

The type returned in the event of a conversion error.

#### `fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>`[src]

Performs the conversion.

### `impl<T, U> TryInto<U> for T where
U: TryFrom<T>,` [src]

#### `type Error = <U as TryFrom<T>>::Error`

The type returned in the event of a conversion error.

#### `fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>`[src]

Performs the conversion.

### `impl<T> BorrowMut<T> for T where
T: ?Sized,` [src]

#### `fn borrow_mut(&mut self) -> &mut T`[src]

Mutably borrows from an owned value. Read more

### `impl<T> Borrow<T> for T where
T: ?Sized,` [src]

#### `fn borrow(&self) -> &T`[src]

Immutably borrows from an owned value. Read more

### `impl<T> Any for T where
T: 'static + ?Sized,` [src]

#### `fn type_id(&self) -> TypeId`[src]

Gets the `TypeId` of `self`. Read more

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g., `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g., `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g., `str,u8` or `String,struct:Vec,test`)